一、填空题
1.__进程___是操作系统中最重要最基本的概念之一,它是系统分配资源的基本单位是,是一个具有独立功能的程序段对某个数据集的一次执行活动。
2.函数调用语句fseek(fp,-20,SEEK_END)的含义是 从fp文件末尾往前移动20个字节的位置 。
3.临界区是指 多个线程同时访问的代码 。
4.Linux 系统调用open打开文件,如果文件不存在则创建,如果存在报错需要使用O_EXCL
5.创建一个已经存在文件系统的errno值为 17 。
6.子进程结束时系统会发送 SIGCHLD 信号给父进程。
7.Fork创建新的进程,先是让父进程共享同一个拷贝,只有在需要写入的时候数据才会被复制,从而使各个进程拥有各自的拷贝,这种方式称为 写时拷贝 。
8.只能实现具有亲属关系进程通信的方式是____父子进程通信_____。
9.A进程正在读取一个文件并设置互斥锁。如果B进程也要读取此文件,则B进程会_被挂起_______。
10.在终端使用 ipcrm –m 234567 命令删除IPC通信中的一个消息队列。(例如:msgid=234567)
二、填空题
1.请分析exit()函数和_exit的区别。
答:_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit 系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是 “清理I/O缓冲”。
2.请列出内核进程同步方式。
答:互斥锁、条件变量、读写锁、信号量、管道、消息队列、共享内存、socket
3.父进程未调用wait/waitpid,子进程结束后会成为僵尸进程,如何避免产生僵尸进程。
答:在fork子进程之后用wait,同时当子进程退出时,内核会给父进程一个SIGCHLD信号,所以我们可以建立一个捕获SIGCHLD信号的信号处理函数,在函数体中调用wait,就可以清理退出的子进程以达到防止僵尸进程的目的。
4.什么是自旋锁?请写出其优缺点。
答:当进程进入cpu运行时,就会给它的代码上锁,以免别的CPU的进程修改里面的代码。作用于线程(进程)之间的同步。
缺点:过多占用CPU时间
5.请写出或画出进程虚拟地址空间布局。
进程虚拟地址布局
/proc/$(pid)/maps 这个文件保存了进程的内存映射
低地址
全局区(程序区)
mmap虚拟内存映射
已初始化数据段
未初始化数据段
堆
栈
os内核
高地址