计算机硬件、操作系统、启动、接口
调用函数:
OS 管理CPU,通过调用函数
进程:CPU管理+内存管理
文件:磁盘管理+终端设备管理
通过接口进入OS(fork)管理CPU
通过Open操作文件
*p=7就是访问内存;
操作系统的核心:管理计算机硬件,通过多进程图像管理CPU
管理CPU,先使用CPU
CPU的工作原理
将程序存放在内存,发出指令后,CPU取指、解释执行指令。
管理CPU:设置好PC初值就行(一段程序的开始地址)
问题:CPU利用率低(如果先等I/O执行完)
多道程序、交替执行:并行处理的思想
CPU和设备的利用率都提高了
一个CPU面对多个程序
一个CPU上交替的执行多个程序:并发
如何做到并发
修改寄存器PC,切换到下一个程序。同时还要记录返回地址,记录程序执行到哪里。返回来时继续执行。
引入“进程”
运行的程序和静态程序不一样。进程时进行(执行)中的程序。
进程需要记录ax,bx。
多进程图像:多个进程使用CPU的图像
启动了的程序就是进程,所以是多个进程推进:
OS只需要把这些进程记录好,分配资源。
多进程图像从开机启动到关机结束
main中的fork()创建了第1个进程
shell再启动其他进程
if(!fork()){ init();}
多进程图像:多进程如何组织?
PCB(Process Control Block):用来记录进程信息的数据结构(如队列)
PCB+状态+队列
运行——>等待;运行——>就绪;就绪——>运行
多进程如何交替
//启动磁盘读写;
pCur,state='W';
//将pCur放到DiskWaitQueue;
schedule():
schedule()
{
pNew=getNext(ReadyQueue);//调度
switch_to(pCur,pNew);
}
交替的三个部分:队列操作+调度+切换
FIFO:公平的策略
Priority:优先级怎么设定
多进程如何合作?
从纸上到实际:
生产者——消费者实例:
核心在于进程同步(合理的推进顺序)
写counter时阻断其他进程访问counter :给counter上锁
总结: