哈工大李治军操作系统--进程与线程

本文深入探讨了操作系统中进程管理的核心概念,包括多道程序设计、进程与线程的区别、进程调度策略、信号量机制、死锁问题及其解决方案。通过实例解析,帮助读者理解进程在现代操作系统中的作用和管理。

CPU/进程管理初探

操作系统是管理硬件的,CPU是最主要的硬件。本节展示了多道程序设计以及引出进程的概念。如何使用CPU呢?让程序跑起来,CPU就一直取指执行了。如何充分利用CPU呢?启动多个程序,交替执行。

多道程序设计(并发)

先看一个例子,下面代码让无I/O指令执行10000000次,而让I/O指令执行10000次,发现前者用时竟然比后者用时还要短!笔者使用的还是固态硬盘!
在这里插入图片描述
显然,I/O操作非常耗时,当CPU运行一个程序的时候,遇到了I/O操作,如果一直等I/O完成再执行后续的指令的话,CPU会空转很长时间,导致CPU利用率大大下降。但是如果CPU此时暂时离开去执行别的程序,那么CPU空转时间就会大大减少,提高CPU的利用率。下面就是一个展示多道程序设计的例子。
在这里插入图片描述

进程的提出

CPU面对多道程序,在多个程序之间切换,就需要记录每个程序的现场信息(用PCB记录),以便再切回到一个程序时可以恢复。程序是静态的,但进程需要记录运行程序的现场信息等。可以简单地认为进程就是运行的程序。

多进程图像

多进程图像就是多个进程交替推进的样子。对于普通用户来说,打开任务管理器,就可以看到各个进程的样子,比如对CPU、内存的使用情况等;对于操作系统来说,操作系统就会创建并维护好各个进程的PCB,保证多进程合理地向前推进。

linux/init/main.c中的main()函数完成内核初始化后执行if (!fork()) { init(); }代码,而init()函数就是启动一个shell(Windows启动一个窗口桌面),供用户使用。而shell中输入命令执行还是创建一个进程。自计算机开机到关机多进程图像就伴随始终,是操作系统的核心图像。

// shell的核心代码
int main(int argc, char * argv[])
{
   
    
	while(1) 
	{
   
    
		scanf(%s”, cmd);
		if(!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值