计组基础知识

2024-09-09 17:36
文章标签 基础知识 计组

本文主要是介绍计组基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作系统的特征

并发
共享
虚拟
异步

操作系统的功能

1、资源分配,资源回收
硬件资源 CPU、内存、硬盘、I/O设备。
2、为应⽤程序提供服务
操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。
3、管理应⽤程序
即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。
4、操作系统内核的功能
(1)进程调度能⼒: 管理进程、线程,决定哪个进程、线程使⽤CPU。
(2)内存管理能⼒: 决定内存的分配和回收。
(3)硬件通信能⼒: 管理硬件,为进程和硬件之间提供通信。
(4)系统调⽤能⼒: 为应用提供系统调⽤。

⽤户态和核⼼态

在什么场景下,会发⽣内核态和⽤户态的切换
系统调⽤:当⽤户程序需要请求操作系统提供的服务时,会通过系统调⽤进⼊内核态。
异常:当程序执⾏过程中出现错误或异常情况时,CPU会⾃动切换到内核态,以便操作系统能够处理这些异常
中断:外部设备(如键盘、⿏标、磁盘等)产⽣的中断信号会使CPU从⽤户态切换到内核态。操作系统会处理
这些中断,执⾏相应的中断处理程序,然后再将CPU切换回⽤户态。

 

进程和线程

Linux内核是不区分进程和线程
‌进程‌:是一个正在执行的程序实例,它拥有自己独立的地址空间、内存、数据和文件描述符。
线程‌:是进程内的执行单元,多个线程共享相同的内存空间和系统资源。
进程:资源分配最小单位。
线程:系统调度最小单位。资源:进程是系统中拥有资源的基本单位,⽽线程不拥有系统资源,属于同一进程的线程共享资源。
调度:线程切换的代价远低于进程。
并发:
独⽴性:每个进程都拥有独⽴的地址空间和资源、除了共享全局变量,不允许其他进程访问。同⼀进程中的不同线程是为了提⾼并发性以及进⾏相互之间的合作⽽创建的,它们共享进程的地址空间和资源。
系统开销:线程所需要的开销⽐进程⼩

 进程控制块

系统通过 进程控制块PCB 来描述进程的基本情况和运⾏状态,就进⽽控制和管理进程,它是进程存在的唯⼀标识, 其包括以下信息:

1. 进程描述信息:进程标识符、⽤户标识符 
2. 进程控制和管理信息:进程当前状态,进程优先级 
3. 进程资源分配清单:有关内存地址空间或虚拟地址空间的信息,所打开⽂件的列表和所使⽤的I/O设备信息。 
4. CPU相关信息: 当进程切换时,CPU寄存器的值都被保存在相应PCB中,以便CPU重新执⾏该进程时能从断 点处继续执⾏; 

并发与并⾏

1. 单个处理核在很短时间内分别执⾏多个进程,称为并发
2. 多个处理核同时执⾏多个进程称为并⾏

进程的状态切换

运⾏态: 该时刻进程占⽤CPU
就绪态:可运⾏,由于其他进程处于运⾏状态⽽暂时停⽌运⾏
阻塞态:该进程正在等待某⼀事件发⽣(如等待输⼊/输出操作的完成)⽽暂时停⽌运⾏

挂起状态可以分为两种:
阻塞挂起状态:进程在外存(硬盘)并等待某个事件的出现;
就绪挂起状态:进程在外存(硬盘),但只要进⼊内存,即刻⽴刻运⾏;

 进程的上下⽂切换

⼀个进程切换到另⼀个进程运⾏,称为进程的上下⽂切换, 进程的上下⽂切换包括虚拟内存、栈、全局变量 等⽤户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。 

进程的时间⽚耗尽
阻塞等待
⾼优先级进程运⾏
中断处理
进程通过睡眠函数 sleep 这样的⽅法将⾃⼰主动挂起

 进程的创建

为新进程分配⼀个独特的进程控制块(PCB)
为新进程分配所需要的资源,⽐如内存、CPU时间
初始化进程控制块(PCB)的各种字段,包括状态、优先级、寄存器初始值等。
将其状态设置为就绪状态,使其能够被调度执⾏。进程进⼊就绪队列,等待分配处理器时间。

7、进程的终⽌

根据标识符,查找需要终⽌的进程的 PCB; 
如果进程处于执⾏状态,则⽴即终⽌该进程的执⾏,然后将处理器资源分配给其他进程; 
如果其还有⼦进程,则应将该进程的⼦进程交给 1 号进程接管; 
将该进程所拥有的全部资源都归还给操作系统; 将其从 PCB 所在队列中删除;

8、进程的阻塞

找到被阻塞进程的标识符对应的PCB 如果该进程为运⾏状态,则保护其现场,将其状态转为阻塞状态,停⽌运⾏; 
将该 PCB 插⼊到等待队列中,将处理机资源调度给其他就绪进程 

9、进程的唤醒

在该事件的阻塞队列中找到相应进程的 PCB; 
将其从阻塞队列中移出,并置其状态为就绪状态; 
把该 PCB 插⼊到就绪队列中,等待调度程序调度;

进程调度

进程通信

进程之间要通信必须通过内核。

 

共享存储
消息队列
管道
信号量
信号
Socket通信

守护进程

守护进程是指在后台运⾏的,没有控制终端与它相连的进程。它独⽴于控制终端,周期性地执⾏某种任务。

僵⼫进程

⼀个进程使⽤fork创建⼦进程,如果⼦进程退出,⽽⽗进程并没有调⽤wait或waitpid获取⼦进程
的状态信息,那么⼦进程的进程描述符仍然保存在系统中。这种进程称之为僵⼫进程。

孤⼉进程

⼀个⽗进程退出,⽽它的⼀个或多个⼦进程还在运⾏,那么那些⼦进程将成为孤⼉进程。孤⼉进程
将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集⼯作。

死锁

1、互斥
每个资源要么已经分配给⼀个进程,要么就是可⽤的
2、占有和等待
已经得到了某个资源的进程可以再请求新的资源
3、不可抢占
已经分配给⼀个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放
4、环路等待
死锁发⽣时,系统中⼀定有由两个或两个以上的进程组成的⼀条环路,该环路中的每个进程都在等待着下⼀个进程
所占有的资源。 

处理⽅法

1、鸵⻦算法
把头埋在沙⼦⾥,假装根本没发⽣问题。
因为解决死锁问题的代价很⾼,因此鸵⻦算法这种不采取任务措施的⽅案会获得更⾼的性能。
当发⽣死锁时不会对⽤户造成多⼤影响,或发⽣死锁的概率很低,可以采⽤鸵⻦算法。
2、死锁检测与死锁恢复 

死锁预防

(1)破坏互斥条件
例如假脱机打印机技术允许若⼲个进程同时输出,唯⼀真正请求物理打印机的进程是打印机守护进程。
(2)破坏占有个等待条件
1. 规定所有进程在开始执⾏前请求所需要的全部资源。
2. 要求当⼀个进程请求资源时,先暂时释放其当前占⽤的所有资源,然后在尝试⼀次获得所需的全部资源。
(3)破坏不可抢占条件
1. 保证每⼀个进程在任何时刻只能占⽤⼀个资源,如果请求另⼀个资源必须先释放第⼀个资源
2. 将所有的资源统⼀编号,进程可以在任何时刻提出资源请求,但是所有请求必须按照资源编号的顺序(升序)提
出
(4)破坏环路等待 

死锁避免

(1)安全状态
如果没有死锁发⽣,并且即使所有进程突然请求对资源的最⼤需求,也仍然存在某种调度次序能够使得每⼀个进程
运⾏完毕,则称该状态是安全的。
(2)单个资源的银⾏家算法
⼀个⼩城镇的银⾏家,他向⼀群客户分别承诺了⼀定的贷款额度,算法要做的是判断对请求的满⾜是否会进⼊不安
全状态,如果是,就拒绝请求;否则予以分配。
(3)多个资源的银⾏家算法
检查⼀个状态是否安全的算法
1. 查找右边的矩阵是否存在⼀⾏⼩于等于向量 A。如果不存在这样的⾏,那么系统将会发⽣死锁,状态是不安全
的。
2. 假若找到这样⼀⾏,将该进程标记为终⽌,并将其已分配资源加到 A 中。
3. 重复以上两步,直到所有进程都标记为终⽌,则状态时安全的。

内存管理

虚拟内存<-->内存管理MMU<-->物理内存

⻚⾯置换算法

1、最佳⻚⾯置换算法(OPT)
置换在「未来」最⻓时间不访问的⻚⾯,实际系统中⽆法实现,因此作为实际算法效率衡量标准。
2、先进先出置换算法(FIFO)
将⻚⾯以队列形式保存,先进⼊队列的⻚⾯先被置换进⼊磁盘。
3、最近最久未使⽤的置换算法(LRU)
根据⻚⾯未被访问时⻓⽤升序列表将⻚⾯排列,每次将最久未被使⽤⻚⾯置换出去。
4、时钟⻚⾯置换算法
把所有的⻚⾯都保存在⼀个类似钟⾯的「环形链表」中,⻚⾯包含⼀个访问位。
当发⽣缺⻚中断时,顺时针遍历⻚⾯,如果访问位为1,将其改为0,继续遍历,直到访问到访问位为0⻚⾯,进⾏
置换。

分段

1、纯分段
分段和分⻚本质上是不同的,⻚⾯是定⻓的⽽段不是。
2、分段和分⻚结合

这篇关于计组基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1151821

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工

计算机基础知识复习9.6

点对点链路:两个相邻节点通过一个链路相连,没有第三者 应用:PPP协议,常用于广域网 广播式链路:所有主机共享通信介质 应用:早期的总线以太网,无线局域网,常用于局域网 典型拓扑结构:总线型 星型(逻辑总线型) 介质访问控制  静态划分信道 信道划分介质访问控制 频分多路复用FDM 时分多路复用TDM 波分多路复用WDM 码分多路复用CDM 动态分配信道 轮询访问介质访问控

Gitflow基础知识

0.理想状态 现状 听完后的理想状态 没使用过 git 知道 git 是什么,会用 git 基础流程命令 用过 git,但只通过图形化界面操作 脱离图形化界面操作,通过 git 命令操作 会 git 命令 掌握 gitflow 规范,合理使用 rebase 和解决代码冲突问题 1.Git 的基础流程&命令 1.1 基础概念 工作区:代码生产基地,pycharm

[JAVA基础知识汇总-1] 创建线程的几种方式

文章目录 1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 线程池 可以认为有四种方式,也可以认为有一种,因为都跟Runnable接口有关 1. 继承Thread类 代码 public class Thread1ExtendsThread extends Thread {// public Thread1(String n

电工基础知识

1、电工常用的电工工具 2、PPR常用配件名称 3、铜芯导线如何选择线鼻子 4、丝锥孔径对照表 5、三相电机接线方法_星形_角型 6、内六角螺铨尺寸表 7、常用螺母规格尺寸 8、常用螺栓螺母名称 9、灭火器分类使用 10、电缆颜色使用代码 11、电缆铜铝鼻子 12、空气开关