操作系统:

    1.有效的控制硬件资源的分配。

    2.提供计算机运行所需要的网络功能。

    3.提供一整套系统调用接口来给程序员开发用。

如果能够参考硬件的功能函数并修改你的操作系统程序代码,那经过改版后的操作系统就能够在另一个硬件平台上面运行了,这个操作称为软件移植。

vim编辑器模式:命令模式 插入模式 底行模式 替换模式 视图模式

printf:默认行缓冲,遇'\n'输出(库函数)库函数提供缓冲区。

write:系统调用,不带任何缓冲方式。

3种缓冲方式:

    无缓冲:write

    行缓冲:进度条制作

    全缓冲:1.强制刷新2。缓冲区写满,才刷。

库函数:其他开发基于系统调用封装函数:C库做的缓冲区。

系统调用:调操作系统接口。

  1. FILE中有数据结构,结构体内容缓冲区

  2. fclose(1),关闭标准输出,当再次open文件时,返回文件描述符1.

  3. 分配文件描述符规则:正常从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,输出信息。

为什么要有进程等待?

将子进程维护信息状态(数据结构)释放,避免内存泄漏。保证子进程退出在父进程之前(同步机制)。避免僵尸,孤儿进程。