计算机操作系统

1.什么是系统调用?

首先 系统在进程上的分类可以是用户态和系统态,用户态是用户直接读取用户程序的数据;系统态运行的程序可以访问计算机的任何资源。
系统调用就是在用户程序中,凡是与系统态级别的资源有关的操作,都需要系统调用的方式提出服务请求,由操作系统代为完成

2.进程与线程的区别

一个应用程序对应一个进程,一个进程执行过程有多个线程。
线程是进程划分的最小的运行单位。
进程之间是相互独立的;但是线程可能会互相影响

3.进程的几种状态

  1. 创建状态
  2. 就绪状态
  3. 运行状态
  4. 阻塞状态
  5. 结束状态

4.进程间的通信方式

  1. 管道pipe:半双工的工作方式,数据只能单向流动,而且只能在亲缘关系的进程间执行
  2. 命名管道FIFO:也是半双工的工作方式,非亲缘关系的进程可以通信(先进先出
  3. 信号:比较复杂的一种通信方式,用于通知接收进程的某个事件
  4. 信号量:是一种计数器,用于控制进程之间对共享资源的访问。是一种锁机制,当两个进程要同时访问一个共享资源时,信号量会防止。
  5. 消息系统MQ:消息系统是消息的链表,管道存放在内存的文件;FIFO存在于实际的磁盘或文件系统;而消息MQ存放在计算机内核
    克服了信号承载信息量少,管道只能承载无格式字节流等缺陷
  6. 共享内存:映射一段能被其他进程所访问的内存。这段内存多个进程都可以访问,常常跟其他的通信方式一起用,如信号量,一起配合实现进程的通信和同步
  7. 套接字Socket:支持TCP/IP网络通信的基本单元。不同主机之间的进程相互通信的端点

5.线程间的同步的目的

线程的同步是指一个进程中多个线程互相协调工作从而达到一致性。
目的是为了防止多个线程对数据同时修改,会对数据进行破坏。

6.线程同步的方式

  1. 信号量:允许同一时刻多个线程同时访问一个资源,但是需要控制最大的线程数
  2. 互斥量:由于互斥对象只有一个,所以可以保证公共资源只被一个线程访问。如Synchronized和Lock机制
  3. 事件(wait/notify):多个线程可以同步,还能实现多线程优先级的比较

7.进程的调度算法

  1. 先到先服务算法 FCFS:从就绪队列选择最先进入的进程,执行完成或被阻塞
  2. 短作业优先算法SJF:从就绪队列中选出估算运行时间最短的进程为之分配资源。
  3. 时间片轮换调度算法:每一个进程为之分配一个时间段,称为它的时间片,即线程可以运行的时间
  4. 多级反馈队列调度算法:公认比较好的算法,既能使高优先级的作业得到响应,又能使短进程作业得到响应。UNIX使用的是这种调度方法
  5. 优先级调度:为每个进程分配优先级,先执行优先级高的进程,以此类推。

操作系统内存管理机制

1.操作系统的内存管理主要做什么

主要负责对内存的分配和回收,另外地址转换(将逻辑地址转换成物理地址)也是内存管理的职责

2.常见的内存管理机制

  1. 块式管理:首先会将内存划分为固定的块,当程序需要内存时,就分配块内存给进程,但块中有可能会有未被利用的内存,称之为碎片
  2. 页式管理:将内存分页大小相等的一页一页的形式,页较小,比块式存储的划分力度更大,提高了内存利用率,减少了碎片
  3. 段式管理:段把内存分为一段一段的,每一段的空间要比一页的空间小很多,并且段时有意义的,每一段中都定义了逻辑信息,如MAIN,子程序段等
  4. 段页式管理机制: 结合了段式管理和页式管理的优点。把主存分为若干段,每个段又被分为若干页。

3.快表和多级页表

分页管理最重要的两点是:虚拟地址到物理地址的快速转换;虚拟地址大,页表也很大

快表
加速虚拟地址到物理地址的转换。
快表是一种特殊的高速缓存,需要地址转换时,先访问快表,没有则再访问页表,同时把页表的映射存到快表中
多级页表
时间换空间,避免页表全部放在内存占用过多空间

4.比较分页机制和分段机制

共同点:都是为了提高内存的利用率;都是离散存储的,但是每个页和段的内存都是连续的
不同点:页的大小是固定的,段的大小不固定;页是没有意义的,段则是逻辑信息的单位

5.逻辑地址和物理地址

逻辑地址:逻辑地址由操作系统决定,一般指针存储的地址就是逻辑地址
物理地址:指内存中真实存在的内存地址,准确来讲就是内存地址寄存器中的地址

6.cpu寻址是什么?为什么要用虚拟地址空间?

cpu寻址: 指的是CPU把虚拟地址转换成为物理地址,这样才能访问到真实的物理地址。
为什么要有虚拟地址:如果没有虚拟地址,那么应用程序直接操作的就是物理地址,这样做会带来两个问题

  1. 用户随意访问任何内存,容易破坏操作系统,造成崩溃
  2. 运行多个程序非常困难,在运行一个程序的过程中运行另外的程序会造成前一个程序的崩溃。
    总结:如果直接把物理地址暴露出来,会对操作系统造成威胁,并且运行多个程序很困难

虚拟内存

1.什么是虚拟内存

虚拟内存可以让程序拥有超过物理内存空间的更大的可用内存。
并且可以给进程一个一致的、私有的内存空间,让进程如同单独运行在主存一样。
虚拟内存的重要意义在于定义了一连串的虚拟地址空间,并把内存扩展到硬盘空间!

2.局部性原理

局部性原理是虚拟内存的基础,正是因为局部性原理,才可以只装入部分程序到虚拟内存并运行。
局部性原理的表现:时间局部性;空间局部性
过程就是 将运行过的指令和数据存储到高速缓存中,然后可以再次调用

3.虚拟存储器

基于局部性原理,当运行的程序内存大小大于计算机系统实际的内存,就需要用到虚拟内存,当访问的信息不在内存中时,就需要操作系统把所需要的数据掉入内存,并且把暂时不需要的数据放到外存上,这样计算机就像是提供了一个比实际内存空间大的多的存储器–虚拟存储器

4.虚拟内存的技术实现

虚拟内存的实现,建立在分页管理和分段管理上。又名为 请求分页粗存储管理,和请求分段存储管理
他们的根部区别是 是否将全部的地址空间都放入内存。请求分页和请求分段都不需要将地址空间全放入内存
实现虚拟内存需要:

  1. 有一定的内存和外存容量
  2. 缺页中断,程序运行过程中需要的数据不在内存中,操作系统将相应的页调入内存

5.页面置换算法

就是淘汰页面的规则,当内存中没有足够的空间时,操作系统就要选择一个页面将其移出内存,以便为调入的页面让出空间
共有四种算法:

  1. OPT页面置换算法(最佳页面置换算法):被置换的页面是永久不用的页面,或者是最长时间不被访问的页面,但是由于不知道哪些是最长时间不被访问的页面,所以无法实现
  2. FIFO页面置换:最先进入的页面最先被替换
  3. LRU页面置换:LRU赋予每个页面一个访问字段,记录上次被访问后所经历的时间。把最久未使用的替换
  4. LFU页面置换:将在之前使用最少使用频率的页面置换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值