操作系统:
1.有效的控制硬件资源的分配。
2.提供计算机运行所需要的网络功能。
3.提供一整套系统调用接口来给程序员开发用。
如果能够参考硬件的功能函数并修改你的操作系统程序代码,那经过改版后的操作系统就能够在另一个硬件平台上面运行了,这个操作称为软件移植。
vim编辑器模式:命令模式 插入模式 底行模式 替换模式 视图模式
printf:默认行缓冲,遇'\n'输出(库函数)库函数提供缓冲区。
write:系统调用,不带任何缓冲方式。
3种缓冲方式:
无缓冲:write
行缓冲:进度条制作
全缓冲:1.强制刷新2。缓冲区写满,才刷。
库函数:其他开发基于系统调用封装函数:C库做的缓冲区。
系统调用:调操作系统接口。
FILE中有数据结构,结构体内容缓冲区
fclose(1),关闭标准输出,当再次open文件时,返回文件描述符1.
分配文件描述符规则:正常从3开始,关闭1后,再分配从未使用的最小整数开始。
PCB中有一个文件叫做file_struct(指针数组),文件对象表。指向一个个文件。指向file obj(调用自己方法操纵)
FILE中文件字段包括fd文件描述符。输入输出重定向,打开一个文件放入0下标,任何可用于标准输出函数都可用于新文件。fclose(0);
操作系统允许页表填充,不一定马上填,(用的时候填充)缺页中断,产生映射。
虚拟地址好处:
1.保护机制:(对物理地址),不能直接对物理地址进行操纵。
2.独占资源(4G).
vfork(),创建进程
特点:
1.共享地址空间(父,子进程)
2.子进程先运行,调exec后父进程运行。
进程1.退出:合理(安全无误按代码执行)2.SIGCHID信号(退出时给父进程发送)。
pid_t wait(int* status);返回等到的进程号,status为输出型参数(通过参数从函数拿到内容)低8位表示异常信号,次低8位表示退出码。
pid_t waitpid(pid_t pid,int *status,int options);
pid为所等进程,堵塞等待时options为0,缺省阻塞格式。
WNOHANG等待方式:非阻塞。(轮询)
若不关心退出状态,将status设置为NULL.
返回值:
0:正在等待
-1:失败,置errno
大于0,输出信息。
为什么要有进程等待?
将子进程维护信息状态(数据结构)释放,避免内存泄漏。保证子进程退出在父进程之前(同步机制)。避免僵尸,孤儿进程。