《操作系统导论》笔记(3、抽象:进程)

3 抽象:进程

进程:就是运行中的程序。程序本身没有生命周期,是操作系统让这些字节运行起来。

人们常常希望同时运行多个程序。通过虚拟化CPU来提供这种假象。通过让一个进程只运行一个时间片,然后切换到其他进程(时分共享CPU技术)

低级机制(如上下文切换)和高级智能(调度策略,做出某种决定的算法)

3.1 抽象:进程概念

操作系统为正在运行的程序提供的抽象,就是所谓的进程(process)

进程的机器状态:内存、寄存器

程序计数器(PC)告诉我们程序即将执行哪个指令

栈指针和相关的帧指针用于管理函数参数栈、局部变量和返回地址

分离策略和机制:将高级策略和其低级机制分开,通用的软件设计原则

机制:为系统的“如何(how)”问题提供答案。如操作系统如何进行上下文切换

策略:“哪个(which)”问题提供答案。如操作系统现在应该运行哪个进程

将两者分开可以轻松地改变策略,而不必重新考虑机制

3.2 进程API
  • 创建(create)
  • 销毁(destroy)
  • 等待(wait)
  • 其他控制(miscellaneous control):如暂停
  • 状态(status)
3.3 进程创建:更多细节

操作系统如何启动并运行一个程序?进程创建实际如何进行?

1、操作系统运行程序第一件事就是将代码和所有静态数据(例如初始化变量)加载到内存中,加载到进程的地址空间中

image-20211026110534860

现代操作系统惰性(lazily)执行该过程,即仅在程序执行期间需要加载的代码或数据片段,才会加载

2、接着,操作系统必须为程序的运行时栈(stack)分配一些内存,也可能为程序的堆(heap)分配一些内存(通过调用malloc()显示请求)。数据结构需要堆

3、操作系统还将执行一些输入/输出(I/O)相关的任务

3.4 进程状态

进程可以处于以下3种状态之一:

  • 运行(running)
  • 就绪(ready)
  • 阻塞(blocked)

image-20211026111705601

3.5 数据结构

为了跟踪每个进程的状态,操作系统可能会为所有就绪的进程保留某种进程列表(process list),以及跟踪当前正在运行的进程的一些附加信息。操作系统还必须以某种方式跟踪被阻塞的进程

已退出但尚未清理的最终状态:僵尸状态。这个状态允许其他进程(通常是创建进程的父进程)检查进程的返回代码,并查看刚刚完成的进程是否成功执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值