进程基础知识

单任务操作系统和多任务操作系统

单任务操作系统

单任务操作系统是一台计算机在一个时刻只能让一个用户进行访问,并且该用户一次只能执行一个任务,提交一个作业,一个用户独占系统的全部硬件资源和软件资源,比较经典的单任务操作系统有:MS-DOS PC-DOS CP/M等…

多任务操作系统

单任务操作系统在现在已经被淘汰了,自20世纪60年代来,计算机硬件设备迅猛发展,cpu的效率逐渐提高,内存扩容,磁盘升级,中断装置和输入输出设备的普及,人们为了充分利用硬件的性能,必须要升级操作系统,提升系统效率,多个程序共享计算机硬件俨然成为研究的主旋律,内存共享,cpu的控制权转移,访问冲突避免,虚拟化,管理器提升等一个又一个课题被科学家们发现认证并实现,多任务操作系统在这种环境下应运而生。现在典型的多任务操作系统有Windows Linux Unix Mac Os

进程基本概念

什么是进程

进程是操作系统中的执行单元,处理单位,用于获取操作系统资源,执行完成某些特定任务或者工作。这些系统资源包括核心处理器 内存设备 硬盘设备 网卡等等

进程的生存环境

操作系统在创建进程的时候,会为每个进程分配虚拟的内存资源控件,用于保存进程的相关数据。这里以x86的32位操作系统为例子说明操作系统为内存分配的空间都保存有哪些东西。
32位操作系统为进程分配的内存空间为4G,其保存的信息如下图。
32位操作系统进程内存分配图

PCB

在进程的内存分配中3G到4G的空间是内核空间,里边存储着进程PCB
PCB为进程控制块,每个进程都有自己的PCB,并且是唯一的,PCB用于记录进程的详细信息,例如进程号pid等等都保存在PCB中,如果一个进程结束,PCB也要被回收释放。PCB是一个struct结构体,里边有300多个成员,记录着进程相关的全部内容。

命令行参数和环境变量

环境变量是由系统拷贝继承过来的一些配置参数。所以改变进程的环境变量不会影响系统的环境变量。在linux系统下可以使用env命令查看系统的环境变量。
env命令查看系统环境变量
命令行参数用于接收用户的外部传参。像linux命令中ls -l该命令中-l就相当于传的参数。还有一种常见的传参形式就是在主函数的参数传参。

#include<stdio.h>
int main(int argc, char ** argv)
{
	printf("argc:%d, argv[0]=%s argv[1]=%s argv[2]=%s argv[3]=%s\n",argc,argv[0],argv[1],argv[2],argv[3]);                                                                                              
    return 0;
}

运行以上程序传参数时,一共是4个参数,argc=4,第一个参数为应用程序名称,后边的参数为我们传入的参数。

进程栈

进程栈用来存储一些程序的临时变量

库空间

用于保存程序的库资源(运行时联入外部加载)静态库或动态库

堆空间

用户主动申请的资源空间, new malloc colloc relloc

BSS

存储未初始化的全局变量与静态变量

DATA

存储已经初始化的全局变量和静态变量

TEXT代码段

存储进程主要的运行逻辑

NULL

哨兵节点用于标记进程存储的结束位置

虚拟内存

32位系统为一个进程就会分配4G的内存,显然我们电脑的实际物理内存的大小是承担不了操作系统这么多进程的内存的,其实系统为进程分配的内存并非物理内存,而是虚拟内存,用户空间的内存区域存储的实际是指向实际内存空间地址的指针,而虚拟内存的这种映射关系由虚拟内存映射表来进行管理。进程分配虚拟地址其实和文件系统的寻址方式类似,当内存的指针级别过多时就会进行内存的间接寻址。

多任务操作系统设计核心

cpu的分时复用,可以将cpu设备以及资源更好的分配给多个进程使用,提高系统整体处理性能,发挥cpu的处理能力。
cpu保存和回复处理器现场,可以保证cpu寄存器在进行时间片切换时不会造成数据的丢失,保证了执行的准确性和稳定性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值