接下来进入系统编程的学习;
第一阶段;进程概念;分为以下知识点
目录
一、冯诺伊曼体系结构
二、操作系统
系统调用接口;
三、进程概念
1.进程和程序不是一回事
编辑
pcb--进程控制块;面试常问;
pcb中的描述信息
四、进程状态
Linux的进程状态;
父子进程;
奠定了现代计算机硬件体系结构
寄存器;是CPU上的数据存储单元;不同的寄存器有不同的功能;
cpu想要处理数据;要从内存中取出数据进行处理
cpu要执行一个程序;就要先把程序从硬盘加载到内存中去
本质;一个软件程序
功能;对计算机上的软硬件进行管理
目的;让计算机运行更加流畅,更好用
完整的操作系统;内核;外部应用
操作系统中;先将每个硬件进行描述;双向链表给组织起来进行管理
用户------》库函数/shell命令------》系统调用接口----》;如下图;
操作系统向上层提供的用于访问内核的接口
由于系统调用接口功能单一;在实现某些功能时需要复杂的编程
因此我们要进行接口的封装;这种封装出来的接口叫做库函数
库函数&系统调用接口的关系:库函数是对系统调用接口的一层封装
是什么?
进程;就是运行中的程序;在操作系统的角度;进程是系统对运行中程序动态运行过程的描述-pcb(进程控制块);在linux下是一个task_struct的结构体,系统通过这个描述实现对程序运行的管理及调度。
程序是一堆指令集;数据;躺尸在硬盘上;
进程是运行中的程序
运行的程序有很多;但是CPU只有一个;CPU到底该处理谁的指令和程序呢?
多任务操作系统中的----cpu分时机制
由操作系统进行管理;cpu可以一直处理程序;但是操作系统进行控制;cpu只处理一个程序很短的实践;然后就切换处理下一个程序;以快速的切换达到多个程序在同时运行的效果。
cpu处理每一个程序只会有一个时间片的时间;时间片运行完了就切换下一个
问题;当第一次运行音乐;时间片到了;切换下一个程序;等下一次运行音乐时;上次的音乐已经运行到中间了;系统怎么知道音乐要从哪儿开始运行呢?
操作系统需要对程序运行过程进行描述;比如上次运行到哪儿了;正在处理那个数据;在程序切换的时候;要把cppu寄存器中的数据给保存下来;;等下次切换回来;把这些数据重新加载到寄存器上
对于程序运行过程的描述;叫做pcb--进程控制块;在linux下是一个task_struct结构体;操作系统调度管理程序的运行就是通过pcb实现的。
标识符; 内存指针;程序数据在内存中的地址;;程序计数器;上下文数据;保存的是cpu寄存器中的数据;,进程状态; IO信息。。。。。。。。。。。。。。
状态的作用;当前的进程该如何被操作系统进行调度管理
时间片;系统中cpu分时机制;让每个程序只在cpu上执行很短的时间
每一个运行中的程序;都有一个状态;该状态标记了一个进程如何被系统进行调度运行
课本上;
就绪--准备好了;拿到时间片就能运行
运行--正在处理cpu上的数据
阻塞--因为某些特殊原因;暂不能运行;满足某种条件;置为就绪状态;拿到时间片切换到运行状态才能运行
前台进行&后台进行;前台进程就是指占据了一个终端的进程;后台进程是没有关联的终端;默默运行在系统中
运行态-R;正在被执行;以及拿到时间片就能执行的进程
R; : 加号表示前台进程
可中断休眠态-S;一种阻塞态;因为某种运行条件不满足;暂时不能被调度运行的进程状态;
小明晚上包夜机通宵;早上回来睡觉写个一个不要打扰的纸条在床头;纸条就是状态;阻塞;;同学来看到纸条不打扰他;但是老师来了把他叫醒;中断;
不可中断休眠态-D;无法被中断打断阻塞;只能等待阻塞的唤醒条件满足后才能被调度执行
停止态-T;说明都不做;但还会被调度;与休眠不一样;休眠是有工作的;
僵尸态;程序退出运行了;但是资源没有被完全释放;等待处理的一种状态