操作系统概述

1.进程与线程

  • 进程是系统进行资源分配和调度的一个独立单位。线程是CPU进行资源分配和调度的基本单位。
  • 引入线程有以下的优点:易于调度;提高并发性;开销小;有利于发挥多处理器的功能。
  • 进程与线程的区别:一个进程可以包含多个线程,但一个线程只能属于一个进程;一个进程的所有线程共享该线程的所有资源;线程是轻量级的进程,其切换代价小;每个进程都有自己独立的空间。

2.线程同步的机制

  • 临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
  • 互斥量:只有拥有互斥量的线程才有权限去访问系统的公共资源。因为互斥量只有一个,所以保证资源不会同时被多个线程访问。不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源共享。
  • 信号量:允许多个线程在同一个时刻去访问同一个资源,但一般需要限制同一个时刻访问该资源的最大线程数目。
  • 事件:用来通知线程有一些事件发生,从而启动后继任务的开始。

3.内核线程和用户线程

  根据操作系统内核是否对线程可感知,将线程分为内核线程和用户线程。

  • 内核线程又叫守护线程,其建立、销毁和维护是由操作系统负责、通过系统调度完成。操作系统在调度时参考各进程内的线程运行状况作出调度决定,如果一个进程中没有就绪的线程,那么这个进程就不会占用CPU。
  • 用户线程不需要内核支持而在用户程序中实现的线程,其不依赖与操作系统核心,用户进程利用线程库提供创建、同步。调度和管理线程的函数。

4.内存管理的几种方式?

  • 块式管理
  • 页式管理
  • 段式管理
  • 段页式管理

5.分段和分页的区别

  • 页是信息的物理单位,分页实现了离散分配方式;段是信息的逻辑单位,它含有一组有意义且相对完整地信息。
  • 页的大小固定且由系统确定,段的长度不确定。
  • 分页的作用空间是一维的,即是单一的现行空间,程序员只需利用一个记忆符,即可表示一段地址;分段的作业空间是二维的,程序员在标识一个地址的时候,既需要给出段名,又需要给出段内地址。

6.什么是虚拟内存?

  相对于物理内存而言的,可以理解为“假的”内存,它使得应用程序认为他拥有连续可用的内存,允许程序员编写并运行比实际系统拥有的内存大得多的程序,这使得许多大型软件能在内存有限的系统上实现。

虚存的优点:扩大地址空间;内存保护;公平分配内存;便于进程通信

       缺点:需要额外的数据结构,会占用额外的内存;虚拟地址与物理地址转换的时候会增加指令的执行时间;页面的换入换出需要磁盘I/0;页面只有一部分内容的时候,会浪费内存。

7.内存碎片?内碎片?外碎片?

  • 内存碎片是由于多次进行内存分配造成的
  • 内碎片:分配给程序的存数空间没有用完,有一部分没有用完,但其他程序也无法使用的空间。
  • 外碎片:由于空间太小,小到无法给任何程序分配的存数空间。

8.虚拟地址、逻辑地址、线性地址、物理地址

  • 虚拟地址是由程序产生的由段内选择符和段内便宜地址组成的地址;
  • 逻辑地址是由程序产生的段内偏移地址;
  • 线性地址是指虚拟地址到物理地址之间的中间层,是处理器可寻址的内存空间。若没有分页机制,线性地址就是物理地址。
  • 物理地址是CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。

9.Cache(缓存)替换算法

  1. RAND随机算法
  2. FIFO先进先出算法(缺陷是可能将循环程序替换掉,因为循环进入较早,但实际上一直在用)
  3. LRU近期最少使用算法:首先淘汰最长时间未被使用的页面!将近期最少使用的cache中的信息块替换出去。
  4. LFU近期最少使用算法:近期最不常用的页面置换算法,也就是淘汰一定时期内被访问次数最少的页
  5. OPT最优替换算法(先执行一边,统计cache的替换情况,有了先验消息,第二次执行的时候就可以用最有效的方法来替换)

10.库函数与系统调用?

库函数调用是语言或应用程序的一部分,他是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用接口;

系统函数是内核提供给应用程序的接口,属于系统的一部分。

11.静态链接与动态链接

静态连接是指把要掉用的函数或者过程直接连接到可执行文件中,成为可执行文件的一部分。

动态链接所调用的函数代码并没有复制到应用程序的可执行文件中,而是仅仅在其中加入了所调用函数的描述信息。

12.静态链接库与动态链接库

静态链接库就是使用.lib文件

动态链接库是一个包含可由多个程序同时使用的代码和数据的库。

都实现了代码共享

13.用户态和核心态

 是操作系统的两种运行级别,用来区分不同程序的不同权力,

核心态拥有资源多的状态,用户态是非特权态,其资源需求将受到各种限制。

14用户栈与核心栈

每个进程都有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。

原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5799370.html