进程概念

进程概念

冯诺依曼体系结构:

冯诺依曼 奠定现代计算机已经体系结构,二进制存储

现代计算机五大硬件单元:

​ 输入设备:键盘

​ 输出设备:显示器

` 存储器: 内存

​ 运算器:CPU

​ 控制器:
进程概念

辨析内存 主存 寄存器 计数器 内存

操作系统:

**基本功能:**统筹管理计算机资源;对下管理软硬件资源,对上提供良好的执行环境
1)防止是失控的应用对硬件乱用
2)向应用程序提供简单的机制来控制硬件。
通过几个基本的抽象概念(进程,虚拟内存,文件)来实现功能,先描述再组织
库函数和系统调用关系:上下级调用关系,库函数就是对系统调用接口的一层封装

进程概念

进程概念

**进程:**正在运行的程序的抽象

**程序:**可执行的的代码存放在硬盘 运行的时候加载到内存中

操作系统管理进程:描述进程 PCB 操作系统通过PCB管理运行中的程序 ,一个进程切换到另一个进程的转换是由操作系统内核管理的,内核不是一个独立的进程,而是系统管理所有进程所用代-代码数据结构的集合

task_struct-PCB的一种
在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

描述信息: 进程标识符(PID),进程状态,优先级,程序计数器,上下文数据,记账信息,内存指针,I/O状态信息!
进程查看:

​ /proc

​ ps -ef

​ ps -aux

​ getpid() 获取调用进程的的ID

进程状态

一般操作系统大致可分为这三种状态:就绪 ,阻塞,运行

Linux下进程的状态:

R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptiblesleep)
**D磁盘休眠状态(Disk sleep)**有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。
T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
**X死亡状态(dead):**这个状态只是一个返回状态,你不会在任务列表里看到这个状态
**僵死状态(Zombies)**是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用,后面讲)没有读取到子进程退出的返回代码时就会产生僵死(尸)进程,僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态
来一个创建维持30秒的僵死进程例子:

僵尸进程:处于僵死状态的进程

产生原因:

​ 1.子进程先于父进程退出,操作系统检测到进程的退出

危害:资源泄露

处理:关闭父进程

孤儿进程:

​ 父进程先于子进程退出,子进程成为后台进程,父进程成为1号进程

进程优先级

交互式进程

批处理进程

设置:ps -efl

PRI 优先级 NI nice值:PRI无法直接操作设置,但是可以通过设置NI值,进而调整PRI值

PIR=PIR+NI

renice -n size -p pid

I/O密集型程序

数据密集型程序

并行:

并发:

独立性:

竞争性:

环境变量:

查看环境变量:查看 env set

设置环境变量:

export

unset

常见环境变量

环境变量的继承特性:子进程获取父进程的变量

获取全局变量:

main(int argc,char* argv[], char* env)

extern char** environ;

char* getenv()

虚拟内存

概念:每个进程看到的内存空间都是一样的,称为虚拟内存空间
进程概念