操作系统
文章平均质量分 75
复习专用
干干干就完了
这个作者很懒,什么都没留下…
展开
-
ARM架构和X86架构的区别
ARM架构和X86架构的区别ARM是精简指令集,X86是复杂指令集;X86功耗比ARM大;X86架构采用桥的方式与扩展设备进行连接,易于扩展;ARM通过专门的数据接口与外接设备进行连接,扩展性不好;X86兼容性比ARM要好,ARM基本上采用Linux操作系统;基于x86结构电脑系统平台开发软件比arm结构系统更容易、更简单、实际成本也更低,同时更容易找到第三方软件(免去自己开发的时间和成本),而且软件移植更容易;...转载 2022-03-06 11:25:22 · 4000 阅读 · 0 评论 -
活锁相关知识
活锁活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试——失败——尝试——失败的过程。处于活锁的实体是在不断的改变状态,活锁有可能自行解开。活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。活锁可以认为是一种特殊的饥饿。如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后转载 2021-10-01 20:31:19 · 140 阅读 · 0 评论 -
空闲内存管理
空闲内存管理在动态分配内存时,操作系统必须对其进行管理。一般而言,有两种方法跟踪内存使用情况:位图和空闲区链表。使用位图的存储管理使用位图方法时,内存可能被划分成小到几个字或大到几千字节的分配单元。每个分配单元对应于位图中的一位,0表示空闲,1表示占用。一块内存区和其对应的位图如图3-6所示。分配单元的大小是一个重要的设计因素。分配单元越小,位图越大,然而即使只有4个字节大小的分配单元,32位的内存也只需要位图中的1位。32n32n32n位的内存需要nnn位的位图,所以位图只占用了1/321/32原创 2021-08-27 16:13:12 · 447 阅读 · 0 评论 -
分段和分页的区别
分段和分页的区别分页在分页中,进程的地址空间被划分为固定大小的块。虚拟内存和物理内存都被划分称相等的固定大小的块。虚拟内存中的块称为页,物理内存中的块称为页帧。分页是一种内存管理方法,以页的形式从物理内存中替换到虚拟内存中。进程的地址空间会被划分成与页面大小相同的几部分。分段在分段中,进程的地址空间不会被划分为固定大小的块。每个段的详细信息保存在段表中。段表包含两个主要数据,一个是Base,它是段的基地址,另一个是Limits,它是段的长度。在分段中,CPU产生一个包含段号和段偏移量的逻辑地转载 2021-08-27 00:04:14 · 2941 阅读 · 0 评论 -
使用分段分页的原因,分段的方法
使用分段分页的原因在早期的计算机中,程序是直接运行在物理内存上的,也就是说,程序在运行时所访问的地址都是物理地址。当然,如果一个计算机同时只运行一个程序,那么只要程序要求的内存空间不要超过物理内存的大小,就不会有问题。但是为了更有效地利用硬件资源,必须同时运行多个程序。当我们能够同时运行多个程序时,CPU的利用率将会很高,那么很明显的一个问题是,如何将计算机上有限的物理内存分配给多个程序使用。假设我们的计算机有128MB内存,程序A运行需要10MB,程序B需要100MB,程序C需要20MB。如果我们需要转载 2021-08-26 21:19:25 · 255 阅读 · 0 评论 -
内部碎片和外部碎片
内部碎片和外部碎片内部碎片当内存被划分为一个个的块时,就会发生内部碎片。当一个函数请求内存时,内存块会分配给该函数。当分配给函数的内存超过所请求的内存时,那么已分配内存和所请求的内存之间的未使用的内存就是内部碎片。上图清除显示了内部碎片,因为分配的内存与所请求的内存之间的未使用部分称为内部碎片。外部碎片当有足够大的内存可以提供给内存的请求时,就会发生外部碎片。虽然这些外部碎片很大,但是它们是不连续的,所以不能够使用。在上图中,可以看到,有55KB的空间可以运行一个进程7(需要50KB),但是转载 2021-08-26 21:05:02 · 557 阅读 · 0 评论 -
进程上下文切换与线程上下文切换
进程上下文切换与线程上下文切换的区别线程上下文切换线程上下文切换在同一个进程中从一个线程切换到另一个线程。线程上下文切换非常有效且成本更低,因为它只涉及程序计数器,寄存器和栈指针的切换。线程上下文切换的成本与进入和退出内核的成本大致相同。进程上下文切换进程切换是一种上下文切换,它涉及将进程资源与新进程所需的资源进行切换,这意味着要切换内存地址空间,页表和内核资源,处理器中的缓存等。区别线程上下文切换进程上下文切换当CPU保存线程的当前状态并切换到同一进程的另一个线程时,就会发转载 2021-08-05 16:12:47 · 1150 阅读 · 0 评论 -
虚拟内存相关知识
文章目录虚拟内存物理和虚拟寻址地址空间虚拟内存作为缓存的工具DRAM缓存的组织结构页表页命中缺页分配页面又是局部性救了我们虚拟内存作为内存管理的工具虚拟内存作为内存保护的工具地址翻译结合高速缓存和虚拟内存利用TLB加速地址翻译多级页表综合:端到端的地址翻译Linux虚拟内存系统Linux虚拟内存区域Linux缺页异常处理内存映射再看共享对象fork函数execve函数使用mmap函数的用户级内存映射虚拟内存虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的,转载 2021-07-29 20:18:16 · 448 阅读 · 0 评论 -
函数调用在栈中的表现
栈每个运行的计算机程序都使用称为栈的内存区域来使函数正常工作。机器使用栈来传递函数参数,存储返回信息,保存寄存器以供以后恢复以及用于局部变量,为单个函数调用分配的栈部分称为栈帧。换句话说,对于每个函数调用,栈上都会创建新的空间(即栈帧)。计算机的栈位于内存的最高地址。栈的顶部从高地址向低地址增长。我们使用push S将S压入栈,使用pop D从栈中删除顶部值并将其放入目标(即寄存器或内存位置)。使用栈顶寄存器%esp作为指向栈顶部的指针。调用函数在执行函数之前,程序将函数的所有参数以它们记录的相反顺转载 2021-07-22 11:49:52 · 663 阅读 · 0 评论 -
8086A的中断系统
文章目录8086A的中断系统常见应用引脚中断向量表中断处理过程8086A的中断系统常见应用中断的典型应用包括系统时钟,磁盘输入输出操作,断电信号以及软件自陷等。系统时钟通过一个计数器定期向CPU发出中断,CPU通过专门的时钟中断处理程序来保持计时。现代操作系统对系统时钟的另一个主要应用是为进程切换提供时机。一旦时钟中断发生,程序计数器会被自动压栈,而此时操作系统就有机会将程序状态及内存映像转存至别处,并调用进程调度程序来选择下一个进程,并将其进程状态,包括程序计数器,导入寄存器。这样下一个程序就可转载 2021-07-21 16:22:56 · 1188 阅读 · 0 评论 -
用户态,内核态
为什么需要用户态和内核态在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃,比如:设置时钟,清理内存等等。如果所有的程序都能使用这些指令,系统早就崩溃了。所以,CPU将指令划分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。划分用户态和内核态就是为了保护数据和功能免受故障,提高系统容错性,避免恶意行为,提高计算机安全性的机制。用户态和内核态的区别内核态在内核模式下,执行代码可以完全且不受限制的访问底层原创 2021-07-21 12:45:42 · 143 阅读 · 0 评论 -
中断,异常,系统调用;系统调用 vs 库函数调用
中断,异常,系统调用比较背景计算机启动后会加载操作系统的内核,然后将控制权交给操作系统内核,这一阶段是可以信任的。但在操作系统内核之上,还有很多的应用程序,没有办法做到对这些应用程序的完全信任,然而这些应用程序要使用操作系统提供的服务,并且只有操作系统执行特短命令(具有特殊权限的指令,这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用),这时就需要解决一个操作系统内核与外界打交道的问题,也就是说可以信任的内核必须对外界提供某种访问的接口。同样在使用计算机的过程中,我们除了跟应用程序打交道外转载 2021-07-21 11:50:07 · 227 阅读 · 0 评论 -
自旋锁与互斥锁的区别,信号量和互斥锁的区别
自旋锁与互斥锁的区别mutex是使用系统中任何资源的钥匙。如果拥有mutex,就可以使用资源。如果mutex没有被释放,则进程进入该特定资源的等待队列中。spin-lock是一种机制,在这种机制中,需要资源的进程,轮询资源上的锁直到得到它。也称为忙等待。进程将在循环中忙碌,直到获得资源。第一个区别:即等待资源锁的方式。在mutex的情况下,进程进入等待状态,并且不使用CPU。在spin-lock中,进程继续循环,因此即使在等待时也使用处理器。第二个区别:什么时候使用自旋锁还是使用互斥锁。当一段代码转载 2021-07-21 09:36:20 · 1113 阅读 · 0 评论 -
优先级反转问题,避免优先级反转的几个方法
优先级反转问题转 https://zhuanlan.zhihu.com/p/146132061线程A在一个比较低的优先级上工作,假设是10。然后在时间点T1的时候,线程A锁定了一把互斥锁,并开始操作互斥数据。这时有个高优先级线程C(比如优先级20)在时间点T2被唤醒,它也需要操作互斥数据。当它加锁互斥锁的时候,因为互斥锁在T1被线程A锁掉了,所以线程C放弃CPU进入阻塞状态,而线程A得以占有CPU,继续执行。事情到这一步还是正确的,虽然优先级10的A线程看上去抢占了优先级20的C线程的时间,但因转载 2021-07-20 12:12:46 · 1290 阅读 · 0 评论 -
并发和并行,协程,孤儿进程,僵尸进程,守护进程,进程组,会话
文章目录并发和并行协程协程与线程的区别孤儿进程收养僵尸进程守护进程进程组会话并发和并行并发:在操作系统中,某一个时间段中,几个程序在同一个CPU上运行,但是在任意一个时间点上,只有一个程序在CPU上运行。当有多个线程时,如果系统只有一个CPU,那么CPU不可能真正同时运行多个线程,CPU的运行时间会被划分成若干个时间段,每个时间段分配给各个线程去执行,一个时间段内某个线程运行时,其他线程处于挂起状态,这就是并发。并行:当操作系统有多个CPU时,一个CPU处理A线程,另一个CPU处理B线程,两个线转载 2021-07-04 20:44:30 · 788 阅读 · 0 评论 -
虚拟内存(现代操作系统),分段
虚拟内存虚拟内存的基本思想:每个程序拥有自己的地址空间,这个空间被分割成多个块,每个块称作一页或页面。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。分页当程序引用了一组内存地址,当程序执行指令。mov REG,1000时,它把地址为1000的内存单元的内容复制到REG中。地址可转载 2021-06-13 17:00:45 · 1175 阅读 · 0 评论 -
Linux O(1)调度器和CFS
Linux中的调度Linux系统的线程是内核线程,所以Linux系统的调度是基于线程的,而不是基于进程的。为了进行调度,Linux系统将线程区分为三类。实时先入先出实时轮转分时实时先入先出线程具有最高优先级,它不会被其他线程抢占,除非那是一个刚刚准备好的,拥有更高优先级的实时先入先出线程。实时轮转线程与实时先入先出线程基本相同,只是每个实时轮转线程都有一个时间量,时间到了之后就可以被抢占,如果多个实时轮转线程都准备好了,每一个线程运行它的时间量所规定的事件,然后插入到实时轮转线程列表的末尾。转载 2021-06-12 20:48:21 · 599 阅读 · 0 评论 -
伙伴算法,Linux写时复制,slab算法
Linux写时复制转自https://segmentfault.com/a/1190000039869422在Linux系统中,调用fork系统调用创建子进程时,并不会把父进程所有占用的内存页复制一份,而是与父进程共用相同的内存页,而当子进程或者父进程对内存页进行修改时才会进行复制——这就是写时复制机制。虚拟内存与物理内存进程的内存可以分成虚拟内存和物理内存。物理内存:就是电脑安装的内存条,如果电脑安装了2GB的内存条,那么系统就用于0~2GB的物理内存空间。虚拟内存:虚拟内存是使用软件虚拟的转载 2021-06-12 16:34:49 · 299 阅读 · 0 评论 -
Linux中的内存管理
Linux中的内存管理基本概念每个Linux进程都有一个地址空间,逻辑上有三个段组成:代码,数据和堆栈段。图10-12a中的进程A就给出了一个进程空间的例子。代码段包含了形成程序可执行代码的机器指令。它是由编译器和汇编器把C,C++或者其他程序源码转换成机器代码而形成的。通常,代码段是只读的。数据段包含了所有程序变量,字符串,数字和其他数据的存储。它有两部分,初始化数据和未初始化数据。后者就是BSS。数据段的初始化部分包括编译器常量和那些在程序启动时就需要一个初始值的变量。所有BSS部分中的变量在加转载 2021-06-12 11:08:16 · 627 阅读 · 0 评论 -
文件相关知识
文件文件是进程创建的信息逻辑单元。一个磁盘一般含有几千或几百万个文件,每个文件是独立于其他文件的,唯一不同的是文件是对磁盘的建模,而非对RAM的建模。进程可以读取已经存在的文件,并在需要时建立新的文件。存储在文件中的信息必须是持久的,也就是说,不会因为进程的创建与终止而受到影响。一个文件只能在其所有者明确删除它的情况下才会消失。文件是受操作系统管理的。有关文件的构造,命名,访问,使用,保护,实现和管理方法都是操作系统设计的主要内容。从总体上看,操作系统中处理文件的部分称为文件系统。从用户角度来看,文转载 2021-06-11 10:26:10 · 800 阅读 · 1 评论 -
什么是操作系统?操作系统的主要目的?
什么是操作系统?操作系统是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存,决定系统资源供需的优先次序,控制输入设备与输出设备,操作网络与管理文件系统等基本事务。它为计算机硬件和软件提供了一种中间层。通常情况下,计算机上会运行许多应用程序,它们都需要对内存和CPU进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。操作系统的主要目的操作系统是一种软件,它的主要目的有三种。管理计算机资源,这些资源包括CPU,内存,磁盘驱动器,打印机等。提供一种图形界面,转载 2021-06-09 11:25:32 · 8642 阅读 · 0 评论 -
DMA直接内存访问
DMA直接内存访问(DMA)是一种内存访问技术。它允许某些电脑内部的硬件子系统,可以独立地直接读写系统内存,而不需要中央处理器CPU介入处理。在同等程度的处理负担下,DMA是一种快速的数据传送方式。很多硬件的系统会使用DMA,包括硬件控制器,绘图显卡,网卡和声卡。DMA是所有现代电脑的重要特色,它允许不同速度的硬件设备沟通,而不需要依赖于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的资料复制到寄存器,然后把它们再次写回到新的地方。在这个时候,中央处理器对于其他的工作来说就无法使用。D转载 2021-06-09 11:03:41 · 2493 阅读 · 0 评论 -
RAID磁盘冗余阵列
转 https://zhuanlan.zhihu.com/p/51170719RAID的不同级别RAID即独立磁盘冗余阵列,简称磁盘阵列,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而事先比单块磁盘更好的存储性能和更高的可靠性。RAID的方法有哪些RAID0RAID1RAID5RAID6RAID10RAID0RAID0是一种非常简单的方式,它将多个磁盘组合在一起形成一个大容量的存储。当我们要写数据的时候,会将数据分成N份,以独立的方式实现N块磁盘的读写,那么这N份数据会转载 2021-06-09 10:26:01 · 911 阅读 · 0 评论 -
进程调度相关知识
进程调度当计算机系统是多道程序设计系统时,通常就会有多个进程或线程同时竞争CPU。这要有两个或更多的进程处于就绪状态,这种情形就会发生。如果只有一个CPU可用,那么就必须选择下一个要运行的进程。在操作系统中,完成选择工作的这一部分称为调度程序,该程序使用的算法称为调度算法。尽管有一些不同,但许多适用于进程调度的处理方法也同样适用于线程调度。当内核管理线程的时候,调度经常时按线程级别的,与线程所述的进程基本或根本没有关联。调度简介早期的批处理系统时代,那时的调度算法很简单:依次运行磁带上的每一个作业。转载 2021-06-04 15:42:59 · 931 阅读 · 0 评论 -
死锁的相关知识
死锁在计算机系统中有很多独占性的资源,在任一时刻它们都只能被一个进程使用。常见的有打印机、磁带以及系统内部表中的表项。打印机同时让两个进程打印将造成混乱的打印结果;两个进程同时使用同一文件系统表中的表项会引起文件系统的瘫痪。正因为如此,操作系统都具有授权一个进程(临时)排他地访问某一种资源的能力。两个进程独占性的访问某个资源,从而等待另外一个资源的执行结果,会导致两个进程都被阻塞,并且两个进程都不会释放各自的资源。这种情况就是死锁。死锁可以发生在任何层面,在不同的机器之间可能会发生死锁,在数据库系统中转载 2021-06-04 15:27:51 · 1231 阅读 · 0 评论 -
进程间通信
进程间通信进程经常需要与其他进程通信。例如,在一个shell管道中,第一个进程的输出必须传送给第二个进程,这样沿着管道传递下去。因此在进程之间需要通信,必须要使用一种良好的数据结构以至于不能被中断。关于进程间通信,这里有三个问题。一个进程如何把信息传递给另一个。确保两个或更多的进程在关键活动中不会出现交叉。第三个问题是数据的先后顺序的问题,如果进程A产生数据并且进程B打印数据,则进程B打印数据之前需要先等A产生数据之后才能够进行打印。有必要说明,这三个问题中的两个问题对于线程来说是同样适用的转载 2021-06-02 10:57:10 · 1501 阅读 · 0 评论 -
线程的相关知识
线程线程的使用为什么要在进程的基础上再创建一个线程的概念?多线程之间会共享同一块地址空间和所有可用数据的能力,这是进程所不具备的。线程比进程更加轻量级,所以它们比进程更容易(即更快)创建,也更容易撤销。在许多系统中,创建一个线程比创建一个进程要快10~100倍。第三个原因涉及性能方面的讨论。若多个线程都是CPU密集型的,那么并不能获得性能上的增强,但是如果存在着大量的计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠进行,从而会加快应用程序执行的速度。多线程解决方案一个万维网服务器。转载 2021-05-31 17:28:38 · 293 阅读 · 0 评论 -
进程相关知识
进程当启动系统时,会秘密启动许多进程。例如,启动一个进程用来等待进入的电子邮件;或者启动另一个防病毒进程周期性地检查是否有病毒库更新。于是一个支持多进程的多道程序系统在这里就显得很有用了。在任何多道程序设计系统中,CPU由一个进程快速切换到另一个进程,使每个进程各运行几十或者几百毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程。但在1秒内,它可能运行多个进程,这样就产生并行的错觉。这就是伪并行,以此来区分多处理器系统(该系统由两个或多个CPU共享同一个物理内存)的真正硬件并行。伪并行:是指单核或转载 2021-05-30 23:46:24 · 411 阅读 · 0 评论 -
页面置换算法
文章目录最优页面置换算法最近未使用页面置换算法先进先出页面置换算法第二次机会页面置换算法时钟页面置换算法最近最少使用页面置换算法工作集页面置换算法工作集时钟页面置换算法最优页面置换算法最优页面置换算法不可能实现。该算法是这样工作的:在缺页中断发生时,有些页面在内存中,其中有一个页面(包含紧接着的下一条指令的那个页面)将很快被访问,其他页面则可能要到10,100或1000条指令后才会被访问,每个页面都可以用在该页面首次被访问前所要执行的指令数作为标记。最优页面置换算法规定应该置换标记最大的页面。如果一个转载 2021-05-30 12:27:03 · 426 阅读 · 0 评论