*** 作系统控制和管理计算机系统内各种软件和硬件资源、合理有
效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到
连接计算机
第二题
微内核提供最基本最核心的 *** 作:
进程管理(process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file system)、设备驱动程序(device driver)、进程间通信(inter-process communication)、网络管理(network management)、系统启动(system init)等 *** 作系统功能的实现。
当核外系统需要内核协助时,通过一套接口对内核发出调用请求
内核特点是 *** 作系统具有良好的灵活性,是 *** 作系统内部结构简单清晰,程序代码维护非常方便,但是他与外部程序之间难以进行良好优化
第三题
。。。。。
楼主悬赏分太低了吧 咱们是同学,采纳我
*** 作系统的某些代码可以简化。例如,一个调度器可以同等地对待进程和线程,在调度时不需要特别的代码来区分进程与线程。这个是对的
LINUX在进程和线程都是通过task结构体来定义的。
只是不同进程使用的是不同的进程空间,而同一个进程的不同线程 使用的是相同的进程空间
#include <stdio.h>#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <ctype.h>
/* 允许建立的子进程个数最大值 */
#define MAX_CHILD_NUMBER 10
/* 子进程睡眠时间 */
#define SLEEP_INTERVAL 2
int proc_number=0/* 子进程的自编号,从0开始 */
void do_something()
main(int argc, char* argv[])
{
/* 子进程个数 */
int child_proc_number = MAX_CHILD_NUMBER
int i, ch
pid_t child_pid
pid_t pid[10]={0}/* 存放每个子进程的id */
if (argc >1) /* 命令行参数第一个参数表示子进程个数*/
{
child_proc_number = atoi(argv[1])
child_proc_number= (child_proc_number >10) ? 10 :
child_proc_number
}
for (i=0i<child_proc_numberi++) {
child_pid = fork()
proc_number = i
do_something()
pid[i]=child_pid
}
/* 让用户选择杀死进程,数字表示杀死该进程,q退出 */
while ((ch = getchar()) != 'q') {
if (isdigit(ch)) {
kill(pid[ch-'0'],SIGTERM)
}
}
/* 在这里填写代码,杀死本组的所有进程 */
kill(0,SIGKILL)
return
}
void do_something() {
for() {
printf("This is process No.%d and its pid is %d\n",
proc_number, getpid())
sleep(SLEEP_INTERVAL)/* 主动阻塞两秒钟 */}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)