操作系统——进程

计算机的体系——冯诺依曼体系

现在的计算机大多遵守冯诺依曼体系。冯诺依曼体系结构包含以下几个部分,其他的组件都是在这个基础上发展的。如图:

操作系统(Operating System)

操作系统(OS)是一组做计算机资源管理的软件的统称,他其实是一类软件:

对下:管理各种硬件设备

对上:给软件提供稳定的运行环境

目前的操作系统有:windows系列、UNIX系列、Linux系列、Mac系列、Android系列等

那么,讲到操作系统我们就不得不提到进程,进程是操作系统提供的一种“软件资源”。

进程/任务

每个应⽤程序运行于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之⼀。其实,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进⾏资源分配的基本单位。

现在的计算机都是多进程系统,即同一时刻可以进行很多任务,一个进程就是一个程序,如下图可以看到我的电脑有很多进程在运行。

 从图中可以看出进程在进行时是使用了磁盘的资源的(1%),由此可以看出,进程在进行的时候,计算机都会给他分配一定的硬件资源。所以说,进程是系统分配资源的基本单位。

提示:我的CPU占了42%,42%表示消耗时间的百分比,如果变成100%就会造成系统卡顿,这是因为浏览器网页打开太多或者应用太多(如果有小伙伴的CPU到100%的话建议关闭几个应用或者关掉一些没用的网站哦)。

进程管理

PCB

先描述->使用结构体(PCB):每⼀个 PCB 对象,就代表着⼀个实实在在运⾏着的程序,也就是进程。

class PCB {
 // 进程的唯⼀标识 —— pid;
 // 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
 // 分配给该资源使⽤的各个资源
}

再组织->操作系统通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,⽅便管理时进⾏增删查改的操作。

例如,当我们通过任务管理器查看进程列表时,意味着系统内部在遍历链表,并打印出节点的相关信息。当运行一个新的程序,系统中就会多一个进程,多的这个进程就会构造出一个新的PCB,并且添加到链表上。如果某个运行中的程序退出了,就需要把进程对应的PCB从链表中删掉,并销毁对应的PCB资源。

CPU 分配⸺进程调度

        操作系统对CPU资源的分配,采⽤的是时间模式⸺不同的进程在不同的时间段去使⽤ CPU 资源,同一时间同一进程只能进行一个进程。

将CPU比作成舞台,则正在运行的进程就是正在表演的节目。

需要注意以下几个属性:

1、状态:就绪状态(节目准备上台表演),阻塞状态(节目在赶来准备的路上堵车了)

2、优先级:进程优先进行(给节目插个队)

3、记账信息:针对每个进程运行了多长时间进行一个统计,便于我们根据统计结果调整进程进行的策略,在下一轮进行调整。

4、上下文:相当于存档和读档,存档:在进程调度出CPU之前,需要将当前寄存器的一些信息单独保存,读档:当该进程下次在CPU上进行时,就需要敬寄存器的信息恢复过来。

内存分配⸺内存管理

操作系统对内存资源的分配,采⽤的是空间模式⸺不同进程使⽤内存中的不同区域,互相之间不会干扰,即进程独立性。

进程间通信

        虽然进程之间是独立的,但是进程之间的通信是不受影响的。系统会提供一个公共空间,进程都可以进入,两个进程借助公共空间来交互数据。

那么,操作系统中主要的通信方式有一下几种:

文件:是常用的进程通信的方式,用进程向文件中存入数据,另一进程从文件中读取数据。

网络:在不同设备上的进程之间通过计算机网络进行通信。由于设备的多样性,为了兼容各种设备,就需要一个统一通用的网络协议,例如TCP/IP协议。

线程

        首先带大家了解一下什么是并发编程。上面提到,同一时间同一状态下只能进行一个进程,那么多进程系统是怎样进行的呢?

        多进程系统希望同时可以进行多个进程,这些进程在宏观上是同时执行的,但实际上在微观上是串行地、交错地运行,由操作系统负责这些进程之间的运行切换。。然而在一些场景下,进程在进行频繁创建和销毁的过程中,开销较大(资源的申请和释放)。这个时候不得不提到线程了,线程就是解决上述问题的方案。

        线程就是解决并发编程的解决方案,线程在进程的基础上进行了改进,线程保持了进程的独立性调度,同时省去了分配资源和释放资源带来的开销。那么线程是怎么做到的呢?

现在我们来用PCB来描述一个线程。

进程中一个进程有一个PCB,但是实际上,一个进程可以有多个PCB。

        PCB 中有个属性叫内存指针,多个线程的PCB的内存指针,指向的是同一个内存空间,这样就意味着,只是创建第一个线程的时候需要从系统分配资源,后续的线程,就不必分配,直接共用前面的那份资源就可以了。除了内存之外,文件描述符表(操作硬盘)也是多个线程共用一份的。总的来说,线程通过共享进程的地址空间和资源,以及高效的调度机制,实现了保持进程独立性调度并省去了分配资源和释放资源带来的开销。

进程-线程的区别和联系

关系:

1、线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程要想执行任务,必须的有线程。

2、同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

3、同一进程内的线程共享本进程的资源,而进程之间则是独立的地址空间。

区别:

1、地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
2、资源拥有:同一进程内的线程共享本进程的资源(如内存、I/O、cpu等),但是进程之间的资源是独立的。
3、通信机制:进程由于相互独立,其通信机制相对复杂,例如需要使用管道、信号、消息队列、共享内存、套接字等通信机制;而线程由于共享数据段,其通信机制相对方便。
4、健壮性:多进程要比多线程健壮。如果一个进程在等待一个资源,其他进程可以继续执行。而如果一个线程死掉,整个进程就会死掉。

好了,关于进程和线程今天就介绍到这里,如果这篇博客有什么问题,欢迎各位大佬批评指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inn-inn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值