操作系统基础知识

  1. 进程和线程的区别

    img
    • 进程是系统进行资源分配和调度的一个独立单位, 线程是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,最小的 CPU 执行单元。
    • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
    • 资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
    • 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
    • 进程切换时,消耗的资源大,效率不高。所以涉及到频繁的切换时,使用线程要好于进程。
    • 作用:进程,使多个程序并发执行,以提高系统的资源利用率和吞吐量;线程,减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
    • 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
  2. 什么是死锁?死锁的四个必要条件

    死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,它们都将无法推进下去。此时系统处于死锁状态或系统产生了死锁。

    四个必要条件

    • 互斥

      资源一次只有被一个进程使用。如果另一进程申请该资源,那么申请进程应等到该资源释放为止。

    • 占有并保持

      —个进程应占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。

    • 不可剥夺

      进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。

    • 循环等待

      指在发生死锁时,必然存在一个进程——资源的环形链:有一组等待进程 {P0,P1,…,Pn},P0 等待的资源为 P1 占有,P1 等待的资源为 P2 占有,……,Pn-1 等待的资源为 Pn 占有,Pn 等待的资源为 P0 占有。

  3. 什么是虚拟内存?虚拟内存机制是通过什么手段来实现的?操作系统页面置换算法?重点其中的LRU算法->延伸leetcode146题

    参考:https://blog.csdn.net/u014454538/article/details/99882141

    1. 虚拟内存实质

      将进程的地址空间叫做虚拟地址空间,对这片空间进行分块;使用某些机制,如分页机制、分段机制、段页式机制,将每个页映射到物理内存中,即将虚拟地址映射为物理地址。这样进程访问的是虚拟地址,内部会被转化成存储了代码或数据的物理地址,从而访问到想要的代码或数据。

    2. 优点

      • 通过使用虚拟内存技术,可以将物理内存扩大成更大的虚拟内存,从而不用担心小容量的内存对程序设计的限制。
      • 逻辑内存与物理内存分开外,虚拟内存允许文件和内存通过共享页而为多个进程所共享。
    3. 如何实现虚拟内存?

      通过分页分段段页式三种机制,实现虚拟内存。

      • 分页

        将进程的虚拟地址空间划分成页,虚拟地址页号 + 偏移量组成。通过查找页表中的页表项(PTE),可以获得该页对应的物理内存页框号页框号 + 虚拟地址中的偏移量构成物理地址,进程便可以访问到代码或数据。

      • 分段

        我们可以把内存看作多个段,每个段构成一个独立的地址空间。与分页相比,每个段的大小是不固定的,且可以动态增长

      • 段页式

        将进程的地址空间划分成多个段,每个段有划分成多个页。

        这样可以既拥有分段共享和保护的优点,还能拥有分页的虚拟内存功能。

    4. 页面置换算法

      • 最佳置换算法(OPT)

        选择置换下次访问距离当前时间最长的那些页。

      • 先进先出置换算法(FIFO)

        总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。

      • 最近最少使用(LRU)

        选择上次访问时间距离当前最远的页进行置换。理论基础:根据局部性原理,这样的页是最近最不可能访问的。

  1. 计算机内存和磁盘的关系

    计算机系统出了内存之外,还有一个非常重要的硬件,那就是磁盘。他们都是用于计算机存储,但是内存是利用电流来实现存储,而磁盘是利用磁效应来实现存储,并且,从存储容量来看, 内存是高速高价,而磁盘则是低速廉价。在计算机这个系统中,高速小容量的内存与低速高容量的磁盘进行协同作业。

    我们知道计算机是利用CPU进行数据的运算的,但CPU只能对内存中的数据进行运算,而对于磁盘中的数据是不能运算的。如果要运算磁盘中的数据,必须先把磁盘中的数据读入内存,CPU才能进行运算。

你可能感兴趣的:(操作系统基础知识)