操作系统笔记——1.进程介绍

1.1进程简介

CPU每一个时刻只能执行一个进程,可以认为一个进程就是一个正在执行的程序,但是反过来却不能这么说,进程和程序的关系是很微妙的,比方说,我正在做菜,那么我为了做这一道菜,达到这个目的就是一个程序。在达到这个目的的过程中,我正在看菜谱,然后切菜,起锅烧油,中途我发现没有调料了,然后我可能要去楼下超市买菜,这些动作,就是好几个进程,多个进程协同合作,使程序能达到自己的目的——做一道好菜。

进程有几个状态,运行态,就绪态,阻塞态,大概了解都会在什么情况下会变成这种状态

运行态:占用CPU

就绪态:我随时可以运行,但是其他进程占用CPU,所以我只能等待

阻塞态:比方说,我正在CPU运行,想从管道读一个东西,但是我发现我读不到任何东西,所以我马上变成阻塞态,让其他的进程可以利用CPU

了解到这些之后,他们之间的变换就很容易想象到了,操作系统眼里,可以近似于将多个进程看作是一个数组,越靠端就越容易被调用到。

1.2进程简介

操作系统里面,使用一个结构数组保存各个进程的信息,比如程序计数器,栈指针,内存分配情况,打开文件状态等,这个结构数组的目的就是当中断程序的时候可以保存进程信息,开始程序可以恢复进程的信息,仿佛没有中断过一般。

1.3线程

这个东西有许多的学问,值得重点注意,简单来说,线程就是轻量级的进程,他也有进程的三个状态,进程中可以开辟多个进程,多个线程共享进程的地址空间,比如一个服务器,为用户提供多个文档下载,这些文档放在一块告诉缓存里面,这时候,一个进程多个线程模型显然更合适,因为读取用户的请求信息必然堵塞,这时候其他线程就可以继续发送之前的请求文件的需求,并且,多个进程这样操作,也不合适,因为一块告诉缓存,同一时间只能被一个进程拥有。

        对于线程,他的存在是内核安排还是用户安排,各有利弊,用户安排会很快,但是随之带来的问题是,用户多个线程如果对于内存的调用过多,在进程里面,内核会自动扩展其堆栈,但是假设内核对于线程是感知不到的话,就无法为其自动扩展内存,还有其他的一些问题,因此一个只有进程的操作系统,引入线程,那么很多东西都必须要重写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值