补充

第四周

vfork

  1. 系统调用
    vfork和它创建的子进程和父进程共享地址空间
    fork创建独立的地址空间
  2. pid_t vfork(void)
    共享包括栈空间

  3. 操作系统(Linux)
    例2:栈错误,内存错误
    操作系统(Linux)
    操作系统(Linux)
    exit(0); 终止进程,不返回

在进程当中运行新代码

  1. 替换进程映像
    exec()
    操作系统(Linux)

  2. 操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
  3. system()函数
    操作系统(Linux)
  4. 如果使用新映像完全取代,使用exec

  5. ‘新建进程system
    操作系统(Linux)
    操作系统(Linux)
    加&变为后台进程
    操作系统(Linux)
    ps:查看进程信息
    操作系统(Linux)
  6. 用exec执行命令
    操作系统(Linux)
    down没有被打印,本进程被已经被替换掉。

回收进程资源

  1. 两部分资源
    操作系统(Linux)
  2. 回收用户空间资源
    操作系统(Linux)
  3. return 和 exit区别
    操作系统(Linux)
    操作系统(Linux)
  4. exit 和 _exit区别
    操作系统(Linux)

  5. 操作系统(Linux)
    用return返回,循环会一直进行。
    用exit返回,会终止当前进程
  6. 例2
    操作系统(Linux)
    操作系统(Linux)
    exit刷新文件缓冲区
    _exit不刷新文件缓冲区
  7. 注册退出函数
    int atexit (void (*function)(void))
    (1)先进后出:先注册的后执行
    (2)等到exit(0)执行时执行才退出函数
    (3)_exit不执行退出函数,return执行。
    操作系统(Linux)
    操作系统(Linux)
  8. 回收内核空间资源
    操作系统(Linux)
    waitpid:
    操作系统(Linux)
    操作系统(Linux)

第五周

同步机制–锁

  1. 同步互斥方法
    操作系统(Linux)
  2. 关锁 lock 和开锁 unlock
    操作系统(Linux)
    关锁时忙等待,开销大。
    非忙等(让权等待) -等待队列、阻塞-唤醒
    饥饿、死锁

第七周

无名管道1

  1. 无名管道PIPE
    “ | ” 为 管道
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
    无亲缘关系不能使用无名管道
  2. 管道为内核中的一段特殊的内存空间
    以文件的方式进行操作
    操作系统(Linux)
  3. 管道和文件的区别
    (1)无名管道的内核资源在通信两进程退出后会自动释放
    (2)大小有限制,不能像文件那样存储大量常规信息
    (3)不能使用lseek函数修改当前读写位置
  4. 创建无名管道
    int pipe (int pipefd[2]);
    单项操作
    操作系统(Linux)
  5. 测试无名管道的大小
    操作系统(Linux)
  6. 无名管道的读写
    操作系统(Linux)
    操作系统(Linux)
  7. 父子进程管道通信
    操作系统(Linux)
    操作系统(Linux)
    Q:子进程关闭了读端,为什么还可以读写?
    子进程继承父进程的所有资源,所以父子进程拥有各自独立的读写端。互不影响。

无名管道2

  1. 以阻塞的方式读无名管道,如果当前没有一个进程和写端关联,读操作立即返回,按如下操作
    无论管道有无数据:
    操作系统(Linux)
  2. 如果写端有关联,管道无数据,读进程会阻塞
    操作系统(Linux)
    操作系统(Linux)
  3. 以阻塞的方式写无名管道
    操作系统(Linux)
    signal :注册信号
    操作系统(Linux)
    操作系统(Linux)
    没有进程读管道
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
  4. 以非阻塞的方式读写管道
    操作系统(Linux)
    操作系统(Linux)
    写操作
    操作系统(Linux)
    灰色有数据,白色无数据
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)

有名管道 FIFO

  1. 有名管道,命名管道 操作系统(Linux)
  2. 创建文件节点 mknod pipetest p
    cat test.txt > pipetest&
  3. 创建有名管道
    操作系统(Linux)
    pathname :必须系统中不存在
    mode_t mod :权限
    操作系统(Linux)
    操作系统(Linux)
    -l F后面多出红色 “ | ”,表示有名管道
    操作系统(Linux)
    echo:写入
    操作系统(Linux)
    cat:读出
  4. 读写有名管道
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
  5. 非亲缘关系进程使用有名管道通信
    操作系统(Linux)
    操作系统(Linux)
    示例
    操作系统(Linux)
    操作系统(Linux)
  6. 管道的进本特点
    操作系统(Linux)

双重模式

内核模式 用户模式

Linux

对已经释放的函数栈空间的访问,是非法的 访问,是不允许的。

系统调用

系统调用的 实现 --软中断,可编程中断操作系统(Linux)
中断Interrupts
– 外部中断 External (hardware generated) interrupts 串口、硬盘、网卡、时钟、…
软件产生的中断 Software generated interrupts int 0x80指令,用于系统调用
• 异常Exceptions – 程序错误 – 软件产生的异常 – 机器检查出的异常

程序访问 – 通过高层次的API接口 – 而不是直接进行系统调用
• 三种最常用的应用程序编程接口
API
Win32 API 用于 Windows – POSIX API 用于 POSIX-based systems (包括UNIX LINUX,Mac OS X 的所有版本) – Java API 用于JAVA虚拟机(JVM)*

Linux 可执行文件结构

  1. BSS段: 全局或静态未初始化的变量
  2. 数据段: 全局或静态已初始化的变量
  3. 代码段指令代码操作码,操作数),常量, const声明的变量, 字符串常量

第十三周

页面置换算法–FIFO

  1. 算法过程
    操作系统(Linux)
    增加物理块(物理块增多,缺页次数增加情况–异常Belady’s Anomaly)
    操作系统(Linux)
    异常原因:
    操作系统(Linux)

最近最久未使用算法–LRU

  1. 算法过程
    操作系统(Linux)
  2. LRU算法的可能实现方法
    操作系统(Linux)
    操作系统(Linux)
    操作系统(Linux)
  3. 活动页面栈
    操作系统(Linux)
    7被抽出,栈底为将要被淘汰的
    操作系统(Linux)

相关文章: