1.程序与进程
程序是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的设备……)。
进程是活跃的程序,占用系统资源,在内存中执行(程序运行起来会产生一个进程)。
程序就好比是剧本,而进程就是按照剧本演的戏(舞台、演员、道具等就相当于系统资源),同一个剧本可以在多个地方同时上演,同一个程序也可以加载为不同的进程。
2.并发
在操作系统中,一个时间段中有多个进程都处于已启动到运行至完毕之间的状态,但任一时间点只有一个进程在运行。
3.单道程序设计
所有进程一个一个排对执行。若A阻塞,B只能等待,即使CPU处于空闲状态。例如以前的Dos系统
4.多道程序设计
在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。
5.CPU与MMU
*处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。*处理器主要包括运算器(算术逻辑运算单元,ALU,ArithmeTIc Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
下图为CPU一般工作流程。假如数据在硬盘上放着,当我们执行某个程序的时候,从硬盘中先拿到内存中,在拿到cache缓存器中,然后由预取器预取指令,再交给译码器进行译码,译码器再交给ALU算术逻辑单元执行运算,然后,将运算好的数据交给寄存器,由寄存器交给内存,再由内存交给硬盘。
MMU为内存管理单元,主要目的是完成物理内存与虚拟内存的映射,还有修改内存的访问级别下图为MMU虚拟地址与物理地址的映射关系。
6.进程控制块
每个进程在内核中都有一个进程控制块(PCB),用来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
task_struct部分内容如下:
进程id,系统中每个进程都有唯一的id,在C语言中用pid_t类型表示,其实是一个非负整数。
进程的状态,有就绪、运行、挂起、停止等状态。
进程切换时需要保存和恢复的一些CPU寄存器。
描述虚拟地址空间的信息。
描述控制终端的信息。
当前工作目录。
umask掩码。
文件描述符表,包含很多指向file结构体的指针。
和信号相关的信息。
用户id和用户组id。
会话(Session)和进程组。
进程可以使用的资源上限。
7.进程状态
进程基本状态有5种,分别为初态、就绪态、运行态、挂起态和终止态,其中初始态为进程准备阶段,常与就绪态结合。