操作系统中的进程

操作系统是计算机内部的一个软件,是计算机最重要的,也是最复杂的的软件之一。

现今的操作系统有Windows,linux,mac,Android,ios等操作系统。

操作系统是一个搞”管理的软件“,对下要管理好各种硬件设备,对上要给各种软件提供稳定的运行环境。

操作系统中的各种功能是非常复杂的,其中进程是其中比较重要的功能之一。

进程是什么

在电脑中进程就是一个个运行起来的电脑程序(QQ等),在我们一般的电脑中这些软件的存储地址都在c盘d盘e盘中的任意一个,他们的存储形式是以文件的形式存储的,一旦点击这些文件中的.exe文件,操作系统就会把这个.exe文件给加载到内存中,并让CPU开始执行.exe文件中内部一些指令,我们就将运行起来的这些文件称为进程。

如下图就是进程

进程中又包含了线程,线程是进程中的一个部分,我们可以将进程看做一个正在行驶的汽车,线程就是汽车在行驶过程中正在运行的各个组件。在java中,java的进程就是平常说的jvm.

在操作系统中进程是如何被管理的?

操作系统中一般会先描述一个进程也就是创造出进程中的一些相关属性(cpu,内存空间等),这些一般的操作底层都是由c/c++来实现的。然后在将多个进程进行组合到一起(通过一些数据结构将

数据信息放到一切方便增删改查)比如说查看任务管理器就是在遍历链表来查询电脑正在运行的进程。

 操作系统中描述进程被称为PCB(进程控制块)

pcb的一些属性

pid(进程id):进程的身份标识。

内存指针:这个进程的代码/指令在内存的哪里,以及这个进程执行中依赖的数据在哪里。

文件描述符:进程每打开一个文件,文件描述符就会增加一项其也可以被视为一个数组,里面的数组元素又是结构体,对应一个文件的相关信息。进程启动时,默认将会打开三个文件标准输入(System.in),标准输出(System.out),标准错误(System.err)。

这些是pcb中一些比较基础的属性下面这些属性则是为了实现进程的调度的

状态:描述了当前进程的状态如就绪状态:进程可以随时调用用,阻塞状态/睡眠状态:不能被调用等。

优先级:先给谁分配时间,后给谁分配时间以及分配时间的多少。

记账信息:统计了每个进程都分别执行了多久,分别都执行了哪些指令分别都排队等待了多久。

上下文:进程被调度出CPU之前,要先把CPU中的所有的寄存器中的数据都给保存到内存中(PCB的上下文字段中)相当于存档了.下次进程再被调度上CPU的时候,就可以从刚才的内存中恢复这些数据到寄存器中.相当于读档了.

进程的独立性

在操作系统中同时运行许多进程,当某个进程出现了bug进程崩溃了会影响到其他进程运行吗,现在的操作系统能够做到这一点就是依靠进程的独立性来保证的,依靠了虚拟地址空间。进程通过虚拟地址空间将各自隔离开来。

进程的通信

在实际工作中,进程之间还是会需要互相通信的。操作系统提高了多种进程间的通信机制。

现在最主要的进程间通信机制是文件操作和网络操作(socket)。

线程

因为如果频繁的创建/销毁进程是创建和销毁内存和文件,资源的申请和释放是一个低效的操作。

所以大多开始使用线程实现并发编程,因为线程比进程更轻量.每个进程可以执行一个任务.每个线程也能执行一个任务(执行一段代码),也能够并发编程.创建线程,的成本比创建进程要低很多.
销毁线程,的成本也比销毁进程低很多.调度线程,的成本也比调度进程低很多.在Linux 上也把线程称为轻量级进程(LWP light weight process)。

为什么线程比进程更加轻量化?

进程重量是重在哪里?重在资源申请释放(在仓库里找东西....)
线程是包含在进程中的.一个进程中的多个线程,共用同一份资源(同一份内存+文件)
只是创建进程的第一个线程的时候(由于要分配资源)成本是相对高的,后续这个进程中再创建其他线程这个时候成本都是要更低一些不必再分配资源了

进程和线程的区别和联系

进程包含线程.一个进程里可以有一个线程,也可以有多个线程.

进程和线程都是为了处理并发编程这样的场景.
但是进程有问题,频繁创建和释放的时候效率低.相比之下,线程更轻量,创建和释放效率更高.(更轻量的原因少了申请释放资源的过程)

操作系统创建进程,要给进程分配资源.进程是操作系统分配资源的基本单位.
操作系统创建的线程,是要在CPU上调度执行.线程是操作系统调度执行的基本单位.
进程具有独立性.每个进程有各自的虚拟地址空间.一个进程挂了,不会影响到其他进程.
同一个进程中的多个线程,共用同一个内存空间一个线程挂了,可能影响到其他线程的,甚至导致整个进程崩溃

 


 

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值