冯诺依曼体系结构:
冯诺依曼奠定了现代计算机的硬件结构体系,它规定了计算机应该具有五大硬件单元
输入设备-输出设备-存储器(内存)-运算器-控制器
硬件结构决定软件行为
操作系统:
操作系统是一款搞管理的软件----管理
操作系统如何管理----管理体系
管理者/被管理者
库函数与系统调用接口的关系:
一层上下级的关系-库函数实际就是对系统调用接口的封装
管理的概念:先描述再组织
进程概念:
进程是什么?
我们所写的叫程序,程序是死的,躺尸在硬盘上的
运行起来的程序叫进程,程序运行起来需要被加载到内存。
站在操作系统的角度看进程
进程就是操作系统对进程的描述,而这个描述有一个名字叫PCB(process control
block进程控制块),linux下PCB有自己的名字叫做task_struct
操作系统如何管理进程:就是task_struct结构体描述进程,使用了双向链表将
这些结构体组织起来进行管理
进程的描述信息都有哪些?
标识符(PID),状态,内存指针,优先级,程序计数器,上下文数据,文件状态信息,记账信息
cpu的分时机制--时间片
如何查看进程:
/proc 存放进程信息
ps -ef 查看所有进程信息,如果查看3027 例 ps -ef|grep 3027
ps aux 查看进程信息
getpid() 在代码中获取进程pid
如何去创建一个进程:
使用fork系统调用通过复制调用进程来创建一个新进程,调用的新进程,创建出来的新进程称之为子进程
fork函数:对于父进程来说,返回值是子进程的pid
对于子进程来说,返回值为0
因为子进程是以父进程为模板来创建的,因此父子进程的代码段是完全一样的,
也就是说,他们运行的程序是一样的
我们用户就是通过对返回值的判断来分辨父子进程,来进行代码分流
父子进程返回值不同,父子进程公用同一个代码段,但是他们的数据并不共用
僵尸进程:
产生原因:子进程先于父进程退出,它要保留退出原因在pcd中,因此退出后不会自动释放所有资源,
子进程退出后操作系统会通知父进程这个家属说子进程退出了,你去获取一下原因,然后完全释放子进程资源
假如父进程不管子进程的退出状态,那么这个子进程将进入将死状态,成为僵尸进程。
危害:资源泄漏。
孤儿进程:
父进程先于子进程退出,那么子进程将成为孤儿进程,并进入后台运行。
父进程变为init进程,也就是说,子进程如果后来退出了,init进程将负责释放资源,init进程非常负责任
因此,孤儿进程不会成为僵尸进程
进程的优先级:
为什么要有进程优先级?
因为进程的功能各有不同因此对CPU资源的要求也各有不同,因此针对进程的调度就有了优先级,优先级决定了cpu资源的优先分配权
nice
renice
PRI=PRI+NI; 通过NI的值来修改优先级
竞争性/独立性/并行/并发
环境变量:
概念:用于在操作系统中设置环境参数的一些变量
特性:这些环境变量具有全局特性
echo env set unset export
extern char **environ; main函数第三个参数 getenv("PATH")
进程虚拟地址空间:
什么是地址?
地址是指向内存区域的编号,每一个进程都有4G的进程地址空间。
虚拟地址空间实际是一个mm_struct结构体描述的,因此程序地址空间应该叫进程的虚拟地址空间
因为我们获取到的地址都是虚拟地址,而不是真正的物理内存地址
而访问虚拟地址是通过页表转换映射之后得到物理内存地址进而访问到内存的
页表还有一个重要功能就是内存访问控制
父进程创建子进程这里需要注意一个写实拷贝技术
进程调度:
需要理解的是:
cpu如何对进程进行调度切换?
进程就是pcb(task_struct)
task_struct中有内存指针,程序计数器,上下文数据
是如何进行高效调度?
1.先来先算 2.时间片调度 3.短任务优先调度 4.优先级调度算法
进程概念
最新推荐文章于 2022-10-03 13:11:49 发布