最近公众号规则改变,为了能第一时间接收到本公众号推送的干货。请将公众号设为星标。如下图操作。重要的事情说三遍:将公众号「设为星标」、将公众号「设为星标」、将公众号「设为星标」。

拍牌电脑如何操作_电脑 操作 记录_电脑基本操作


1. 操作系统概述 1.1 操作系统的定义和目标

定义:操作系统是控制和管理计算机系统的硬件和软件,是分配和调度资源的系统软件。

目标:方便性、有效性(提高系统资源的利用率,提高系统的吞吐量)、可扩展性和开放性。

1.2 操作系统的基本功能

统一管理计算机资源:处理器资源、IO设备资源、内存资源、文件资源;

实现计算机资源的抽象:IO设备管理软件提供读写接口,文件管理软件提供操作文件接口;

提供用户和计算机之间的接口:GUI(图形用户界面)、命令形式和系统调用形式。

1.3 操作系统的特点

最基本的特征是相互存在的条件:并发和共享;

(1)并行性:是指两个或多个事件可以同时发生,多核CPU可以实现并行,同一时刻只有一个程序在一个CPU上运行;

(2)并发性:是指两个或多个事件可以在同一时间间隔内发生。 在用户看来每个程序都在运行,但实际上每个程序都是交替执行的。

(3)共享:操作系统中的资源可以被多个并发程序共享。 这种形式称为资源共享。

虚拟和异步特性的前提是并发。

(4)虚拟性:表现为将一个物理实体转化为若干个逻辑实体。

(5)异步性:在多程序环境下,允许多个进程并发执行,但由于资源限制等因素,进程的执行以“走走停停”的方式运行,各进程的执行(运行、暂停、速度、完成)也是未知的。

1.4 操作系统的中断处理

中断机制的作用:让用户在多通道批处理系统中进行交互;

中断产生:

中断分类:

内部中断(也称为“异常”、“例外”、“被困”) ------ 信号源:CPU内部,与当前正在执行的指令有关;

外部中断(interrupt)------------信号源:CPU外部,与当前执行的指令无关。

外部中断的处理:

每条指令执行完毕后,CPU需要检查是否有外部中断信号;

如果检测到外部中断信号,需要对被中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)进行保护,并保存在PCB(进程控制块)中;

根据中断信号类型转移到相应的中断处理程序;

恢复原进程的CPU环境并退出中断,返回原进程继续执行。

2. 流程管理 2.1 流程管理的流程实体

为什么需要过程:

进程是系统资源分配和调度的基本单位;

进程作为程序独立运行的载体,保证程序的正常执行;

进程的存在大大提高了操作系统资源的利用率。

进程控制块(PCB):用于描述和控制进程运行的通用数据结构,记录进程的当前状态和控制进程运行的所有信息,是进程存在的唯一标识过程。

进程(Process)和线程(Thread):

区别与联系:

一个进程可以有一个或多个线程;

线程包含在进程中,是进程中实际运行工作的单位;

进程线程共享进程资源;

一个进程可以同时运行多个线程,每个线程执行不同的任务。

电脑基本操作_拍牌电脑如何操作_电脑 操作 记录

2.2 流程管理的五态模型

就绪状态:其他资源(进程控制块、内存、栈空间、堆空间等)都已就绪,只有CPU的状态。

执行状态:进程获得CPU,其程序正在执行。

阻塞状态:进程由于某种原因放弃CPU的状态,被阻塞的进程以队列的形式放置。

创建状态:进程创建时,PCB已拥有,其他资源尚未准备好。

终止状态:进程结束,系统清理或返回PCB状态。

电脑基本操作_电脑 操作 记录_拍牌电脑如何操作

2.3 进程管理的进程同步

生产者-消费者问题:有一组生产者进程生产产品,并将这些产品提供给消费者进程进行消费。 生产者进程和消费者进程可以并发执行。 它们之间有一组n。 buffer的缓冲池,producer进程需要将生产出来的产品放到buffer中(+1操作),consumer进程可以从buffer中取出产品消费(-1操作)。

电脑 操作 记录_电脑基本操作_拍牌电脑如何操作

问题:两者并发执行时,可能会出现错误,导致预期结果与实际结果不一致:执行producer +1和consumer -1操作后,buffer的值从10变为11。

电脑 操作 记录_拍牌电脑如何操作_电脑基本操作

与哲学家共进晚餐:有5位哲学家,他们的生活方式是边思考边吃饭。 哲学家们共用一张圆桌,坐在 5 把椅子上。 圆桌上有5个碗和5根筷子。 通常哲学家只会思考,当他们饿了的时候,他们会尝试去拿靠近他们的左右筷子。 只有两根筷子都拿过才能吃饭,否则就等着,吃完后放下左右筷子思考。

这会导致以下问题,筷子相当于临界资源:

临界资源指的是一些即使是共享资源也不能被多个线程同时访问的共享资源。 当一个进程正在使用临界资源时,其他进程必须等待占用进程根据操作系统的同步机制释放共享资源,然后才能重新竞争使用共享资源。

电脑 操作 记录_电脑基本操作_拍牌电脑如何操作

进程同步的作用:协调多个进程之间竞争资源的使用顺序,使多个并发执行的进程能够有效地使用资源并相互协作。

进程间同步的四大原则:

Idle give-in:资源未被占用,允许使用;

Wait while while busy:资源被占用,请求进程等待;

有限等待:保证有限等待时间使用资源;

放弃等待权:等待时,进程需要放弃CPU。

2.3.1 进程同步的方法(重要)

1、使用fork系统调用创建进程:使用不带参数的fork系统调用,fork会返回两次,分别返回子进程id和0,父进程返回子进程id,子进程返回0。

电脑基本操作_电脑 操作 记录_拍牌电脑如何操作

2、共享内存:多个进程在某种程度上共享物理内存,但是由于操作系统的进程管理,进程之间的内存空间是独立的,所以进程默认不能访问进程空间之外的内存空间。 的。

3. Unix 域套接字

域套接字是一种先进的进程间通信方式,可用于同一台机器上的进程间通信。

套接字(socket):网络通信中使用的术语。

Unix系统提供的domain socket提供与网络socket类似的功能,如Nfinx、uWSGI等。

服务端和客户端分别使用Unix domain sockets的过程:

电脑 操作 记录_电脑基本操作_拍牌电脑如何操作

2.3.2 线程同步的方法(重要)

线程同步的方法:

1、互斥锁:互斥锁是最简单的线程同步方式,也称为mutex,一个处于解锁和锁定两种状态之一的变量,这两种状态可以保证资源访问的序列化。 原子性:指一系列操作不能被打断的特性,要么全部执行,要么都不执行。

2.自旋锁:自旋锁是一个多线程同步变量。 使用自旋锁的线程会反复检查锁变量是否可用。 自旋锁不会放弃CPU。 是忙等待状态,也就是无限循环等待锁被释放,自旋锁比互斥锁效率高很多。 特点:避免了进程或线程上下文切换的开销,但不适合在单核CPU上使用。

3.读写锁:是一种特殊的自旋锁,允许多个读操作同时访问资源,提高读性能,但是对于写操作是互斥的,即**提高了更多的操作效率读少写* *非常好。

4.条件变量:是一种比较复杂的线程同步方式。 条件变量允许线程休眠直到满足特定条件。 当条件满足时,线程可以被信号唤醒**。

2.3.3 线程同步方式比较(重要)

电脑基本操作_电脑 操作 记录_拍牌电脑如何操作

2.4 Linux进程管理

工艺类型:

前台进程:有终端,可以和用户交互;

后台进程:不占用终端,基本不与用户交互电脑基本操作,优先级低于前台进程(需要执行的命令以“&”符号结尾);

守护进程:一种特殊的后台进程,在系统开机时启动,一直运行到系统关机(进程名以“d”结尾的一般为守护进程),如crond、sshd、httpd、mysqld……

进程标志:

Process ID:非负整数,进程的唯一标识,每个进程有不同的ID;

进程的状态标志:R表示进程正在运行,S表示进程正在休眠...

电脑 操作 记录_拍牌电脑如何操作_电脑基本操作

运行Linux进程的相关命令:

ps命令:列出当前进程,结合-aux可以打印进程的详细信息(ps -aux);

top命令:查看所有进程的状态;

kill命令:向进程发送信号。

3. 运营管理 3.1 运营管理的流程调度

定义:指计算机决定决定哪个就绪进程可以获得CPU使用权。

什么时候需要进程调度?

主动放弃:进程正常终止; 运行过程中出现异常而终止; 主动阻塞(比如等待 I/O);

被动放弃:分配给进程的时间片用完; 更高优先级的进程进入就绪队列; 有比较紧急的事情要处理(比如I/O中断);

进程调度方法:

非抢占式调度:只有当前运行的进程才能主动让出CPU;

抢占式调度:操作系统可以剥夺当前进程的CPU使用权。

进程调度的三种机制:

就绪队列的排队机制:为了提高进程调度效率,将就绪进程按照一定的方式排队,以便调度器尽快找到就绪进程。

电脑基本操作_拍牌电脑如何操作_电脑 操作 记录

选择运行进程的委托机制:调度器按照一定的策略选择就绪的进程,并为其分配CPU资源。

新老进程上下文切换机制:保存当前进程的上下文信息,加载委托执行进程的运行上下文。

进程调度算法:

先来先服务算法:按照它们在就绪队列中的顺序执行。

短进程优先调度算法:优先考虑就绪队列中估计运行时间最短的进程,不利于长作业进程的执行。

高优先级优先级调度算法:进程有优先级,优先给权重大的进程,可以让紧急任务优先处理。

时间片轮转调度算法:按照先进先出的原则,对就绪进程进行排列,每次从队头取出需要执行的进程,分配一个时间片执行。 这是一个比较公平的调度算法,但是不能保证一定会响应用户。

3.2 作业管理中的死锁 3.2.1 进程死锁、饥饿、死循环的区别:

死锁:两个或多个进程在执行过程中,由于争夺资源或相互通信造成的阻塞现象,如果没有外力,将无法推进。 永远相互等待的进程称为死锁进程。

饥饿:由于长期无法获得资源,进程停滞;

死循环:代码逻辑BUG。

死锁的发生:争夺资源(共享资源的数量不满足每个进程的需要),进程调度顺序不当,当调度顺序为A->B->C->D时,会发生死锁,但是改为A->D ->B->C 不会生成。

电脑 操作 记录_电脑基本操作_拍牌电脑如何操作

死锁的四个必要条件:

互斥条件:只有当资源被互斥使用时,才会发生死锁;

请求持有条件:进程至少持有一个资源,并提出新的资源请求,新资源被占用,请求被阻塞,被阻塞的进程不释放其持有的资源;

Non-alienable condition:进程获得的资源(包括OS)在用完之前不能被剥夺,只能由进程自己释放;

循环等待条件:发生死锁时,必须有进程-资源环链。 循环等待不一定造成死锁,但死锁一定有循环等待。

死锁处理策略:

1、防止死锁的方法:破坏四个必要条件中的一个或多个。

破坏互斥条件:将临界资源转化为共享资源(Spooling池化技术); (可行性不高,很多情况下不能破坏互斥条件)

请求保留条件破坏:在系统规定进程运行之前,一次请求所有需要的资源; (低资源利用率可能导致其他线程饿死)

不可剥夺条件的破坏:当一个进程请求新的资源不能满足时,必须释放占用的资源; (实现复杂,资源剥夺可能导致部分工作失败,重复申请和发布造成额外的系统开销)

打破循环等待条件:可用资源线性排序,应用必须按需递增申请; (实际的资源使用顺序和进程的编号顺序不同,会导致资源浪费)

2. 银行家算法:检查当前剩余资源是否能满足某个进程的最大需求; 如果是,将该进程加入安全序列,等待该进程被允许完成,并回收所有资源; 重复1、2直到没有线程等待资源;

3、死锁检测与解除:死锁检测算法、资源剥夺法、undo进程法(终止进程法)、进程回滚法;

4、仓储管理

存储管理是保证计算机有足够的内存来处理数据; 确保程序可以从可用内存中获取一部分内存使用; 以确保程序可以返回已用内存以供其他程序使用。

4.1 存储管理的内存分配与回收

内存分配的过程:单次连续分配(废弃)、固定分区分配、动态分区分配(根据实际需要动态分配内存)。 动态分区分配算法:

第一次适配算法:分配内存时,从头开始依次寻找合适的内存区域。 如果没有合适的内存区域,就会分配失败,每次都从头部开始,这样就不断地划分头部地址空间;

Best Adaptive Algorithm:要求空闲区链表按容量排序,遍历找到最合适的空闲区(留下越来越多的内部碎片)。

快速自适应算法:需要多个空闲区链表,每个空闲区链表存储一个容量的空闲区。

内存恢复过程:

恢复区在空闲区下方:无需新建空闲列表节点; 只需要增加空闲区域1的容量;

回收区在自由区之上:将回收区与自由区合并; 新的自由区使用回收区的地址;

恢复区在空闲区中间:合并空闲区1、空闲区2和恢复区; 新的自由区使用自由区1的地址;

仅剩余恢复区:为恢复区创建一个新的空闲节点; 插入对应的空闲区链表;

4.2 存储管理之Segment page storage management

分页存储管理:将进程逻辑空间划分为若干大小的页,并相应地将物理内存空间划分为页大小的物理块,以页为单位将进程空间加载到物理内存中分散的物理块中。

页面大小要适中,太大不易分配,太小内存碎片太多; 页面大小通常为512B~8K;

在现代计算机系统中,可以支持非常大的逻辑地址空间(232~264),以及32位逻辑地址空间的分页系统,规定页大小为4KB,每页中的页表项进程页表可以达到1M(2×20),如果每个页表项占用1Byte,那么每个进程会占用1MB的内存空间仅为页表。

段存储管理:将流程逻辑空间分成若干段(不等分),段的长度由连续逻辑的长度决定。

与分页和段存储管理相比:

段存储和页存储都是离散地管理进程的逻辑空间;

页是物理单位,段是逻辑单位;

分页是为了合理利用空间,分段是为了满足用户的要求。 页大小由硬件固定,段长度可以动态改变;

页表信息是一维的,段表信息是二维的;

分段页存储管理:现在逻辑空间按照分段管理分成若干段,然后内存空间按照分页管理分为若干页。 分页可以有效提高内存利用率,分段可以更好的满足用户需求。

电脑基本操作_拍牌电脑如何操作_电脑 操作 记录

4.3 存储管理的虚拟内存

虚拟内存概述:是操作系统内存管理的关键技术,它使多程序运行和大规模程序运行成为现实,将程序使用的内存进行划分,将一些暂时不用的内存放在辅助存储中,从而实际上是物理内存的扩展。 .

局部性原则:CPU在访问内存时,无论是访问指令还是访问数据,访问的存储单元都倾向于聚集在一个较小的连续区域内。

虚拟内存替换算法:先进先出(FIFO)、最少使用(LFU)、最近最少使用(LRU)

虚拟内存的特点:

4.4 Linux存储管理

Buddy内存管理算法:经典的内存管理算法,为了解决内存不足的碎片问题,该算法基于计算机处理二进制的优势,具有极高的效率。

Linux交换空间:交换空间(Swap)是磁盘的一个分区。 当 Linux 内存满时,会交换一些内存到 Swap 空间。 Swap空间是在系统初始化的时候配置的。

Swap空间和虚拟内存的比较:

5. 文件管理 5.1 操作系统文件管理

文件的逻辑结构:

辅助存储的存储空间分配:

目录树:使任何文件或目录都有唯一的路径。

拍牌电脑如何操作_电脑 操作 记录_电脑基本操作

Linux文件的基本操作:参考链接

电脑 操作 记录_电脑基本操作_拍牌电脑如何操作

电脑基本操作_拍牌电脑如何操作_电脑 操作 记录

Linux文件系统:FAT、NTFS(改进型FAT)、EXT2/3/4(扩展文件系统,Linux文件系统)

6、设备管理

I/O设备的基本概念:向计算机输入输出数据的外部设备;

通用IO设备:

IO设备缓冲区:降低CPU处理IO请求的频率,提高CPU与IO设备的并行度。

SPOOLing技术:虚拟设备技术,将对低速设备的同步调用变为异步调用,在输入和输出之间增加一个排队转储链路(输入好,输出好),SPoOLing负责输入(输出)之间的连接) 很好的和低速设备调度,从逻辑上讲电脑基本操作,进程直接和高速设备交互,减少了进程的等待时间。

7.实现一个支持异步任务的线程池

线程池:线程池是一个存放多个线程的容器。 CPU调度线程执行后,线程不会被销毁,线程会被放回线程池中重新使用。

使用线程池的原因:

线程是稀缺资源,不应该频繁创建和销毁;

架构解耦,业务创建和业务处理解耦,更优雅;

线程池是使用线程的最佳实践。

实现线程安全队列Queue

实现基本任务对象Task

实现了基本功能:任务参数、任务唯一标识符(UUID)、任务特定的执行逻辑

实现任务处理线程ProcessThread:任务处理线程需要不断地从任务队列中取任务执行,任务处理线程需要有一个标记来表明线程应该在什么时候停止。

实现的基本功能:基本属性(任务队列、标记)、线程执行逻辑(run)、线程停止(stop)。

实现任务处理线程池Pool:存放多个任务处理线程,负责多个线程的启停,管理提交任务到线程池,发送给线程执行。

实现的基本流程:基本属性、提交任务(put、batch_put)、线程启停(start、join)、线程池大小(size)。

实现异步任务处理AsyncTask:为任务添加标记,任务完成后,会标记为完成; 任务完成后,可直接获取任务运行结果; 当任务没有完成时,获取任务结果会阻塞获取线程。

两个主要功能:设置运行结果(set_result)和获取运行结果(get_result)

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“C语言”免费领取300G编程资料。