计算机操作系统

Posted lisin-lee-cooper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机操作系统相关的知识,希望对你有一定的参考价值。

一.什么是操作系统

操作系统就是一种运行在内核态的软件:

1.为应用程序(程序员)提供资源集的清晰抽象
2.管理硬件资源

操作系统为应用程序提供基本抽象,从而使应用程序在此基础上可以组合功能;
操作系统用来管理复杂系统的各个部分,对资源的请求进行分配,调节不同程序见相互冲突的资源请求.

二.进程

2.1进程模型:是对程序的一种抽象,是正在执行程序的一种实例(包含寄存器,程序计数器,变量的当前值,拥有自己的虚拟CPU(真正的CPU在进程之间来回切换)

1、进程和程序的区别1:举个例子 ,比如我们做一个蛋糕,程序:就是做蛋糕的食谱。进程:就是厨师阅读食谱,取来各种原料以及烘培蛋糕等一系列动作的总和,所以进程具有输入,输出以及各种状态。
2、进程和程序的区别2:一个程序运行两遍,就相当于两个进程,不过OS能够使两个进程共享代码,即只占用一份内存。

2.2进程的状态:

1、运行态(该时刻进程实际占用CPU)
2、就绪态(可运行,但应为其他进程正在运行而暂时停止)
3、阻塞态(除非某种外部事件发生,否则进程不能运行)

三.线程

在OS中,每个进程都有相应的地址空间和一个控制线程,但是更多的情况下要求在同一地址空间下拥有多个线程并发执行,因此线程被引入操作系统。

3.1 线程模型:

1、进程模型基于两种独立的概念:资源分组处理与执行。
2、线程拥有自己的程序计数器、寄存器、堆栈(为了保存各自的执行历史),状态(如下)它们共享同样的全局变量。进程用于把资源集中到一起:包括内存地址空间,程序,数据等,将这些以进程的形式组织起来可以使得操作系统管理这些资源更为容易。
3、进程是组织资源的最小单位,而线程是安排CPU执行的最小单位,也就是在CPU上被调度执行的实体。
4、线程是为了实现共享一组资源的多个线程的执行能力,以便这些线程可以为完成某一任务而共同工作。

四.进程和线程

多进程:
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。
Linux系统函数fork()可以在父进程中创建一个子进程,这样的话,在一个进程接到来自客户端新的请求时就可以复制出一个子进程让其来处理,父进程只需负责监控请求的到来,然后创建子进程让其去处理,这样就能做到并发处理。

多线程:
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

线程和进程各自有什么区别和优劣呢?
1、进程是资源分配的最小单位,线程是程序执行的最小单位。
2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
4、但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

五.内存分配

连续分配:分区的方式有两种,分区大小相等和不等,而在固定分区有个缺点便是一个用户区只能存放一个进程;动态分区分配:系统初始只有一个大的空闲区(用户区),当进程请求空间时,由系统根据进程需要的空间大小划分出一片空闲区分配给进程

离散分配:将进程分成与内存物理块(页框)一样大小的页,如图所示,16KB的进程分为四个小进程,然后不连续的装入到内存中,先把进程分段,再把段分页。

六.死锁

6.1资源
1、可抢占资源: 可以从拥有它的进程中抢占而不会产生任何副作用。
2、不可抢占资源: 在不引起相关的计算失败的情况下,无法把它从占有它进程处抢占过来。

6.2 死锁

如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件(但是目前所有进程都在等待,就造成了死锁),那么,该进程集合就是死锁的。

6.3 资源死锁有四个必要条件(必须都要满足):

1互斥条件: 每个资源要么已经分配给一个进程,要么可以被使用。
2占有和等待条件: 已经得到了某个资源的进程可以再请求新的资源(如果不请求别的资源怎么形成环呢?)。
3不可抢占(资源)条件: 已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放(如果可以抢占,那么通过进程之间的重新分配就可以化解了)。
4环路等待条件: 死锁发生时,系统中一定有由两个或两个以上的进程组成的一条的环路,该环路中的每个进程都在等待着下一个进程所占有的资源。

以上是关于计算机操作系统的主要内容,如果未能解决你的问题,请参考以下文章

IO基本知识

计算机网络之基本计量单位和进制转换

用于从 REST API 获取状态并自动刷新的小部件的 Flutter 食谱?

计算机的基本存储单位

操作系统-文件系统

进程丶线程丶CPU关系简述