ostep-进程

进程

简单的定义,进程就是运行中的程序。
处理器虚拟化就是提供存在多个处理器的错觉,而事实上只有一个处理器。
处理器的时间复用允许用户运行尽可能多的并发进程,代价就是每个进程会变慢。

4.1 进程的抽象

  • 地址空间
    指令存放在内存中,数据读写也是在内存中。
  • 寄存器
    很多指令读和更新寄存器。有一些特殊的寄存器,比如PC,栈指针和与之关联的帧指针用来管理函数参数,本地变量,和返回地址。
  • I/O
    程序会访问持久化存储设备,比如文件。

4.2 进程API

创建,销毁,等待,其他控制(比如挂起进程),状态。

4.3 进程创建:更多细节

ostep-进程_第1张图片
process.png
  • 从磁盘加载代码和静态数据(初始化变量)到内存
  • 分配运行的地址空间
    • 初始化运行时栈,函数参数,本地变量,和返回地址。填充main函数.
    • 堆。动态分配的空间,比如调用malloc。常用于链表,哈希表,树和其他有趣的数据结构。
  • 其他的初始化任务,尤其是I/O。在unix系统中,每个进程默认打开三个文件描述符,标准输入,标准输出,标准错误
  • 启动程序。找到程序入口点main

4.4 进程状态

  • 就绪
  • 运行
  • 阻塞
ostep-进程_第2张图片
进程状态.png
  • 4.5 数据结构(进程表)
    参考xv6系统实现。
  • 4.6 小结
    • 参考
    • 作业

你可能感兴趣的:(ostep-进程)