面试大纲——操作系统篇
谢小天1990
这个作者很懒,什么都没留下…
展开
-
4. 线程同步几种方式
线程同步的方式主要有以下四种:临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别。他们的主要区别和特点如下:1)临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的转载 2014-08-06 16:35:40 · 2203 阅读 · 0 评论 -
12.基本分页、请求分页存储管理方式
基本分页储存管理方式具有如下特征:1) 一次性。要求将作业全部装入内存后方能运行。许多作业在每次运行时,并非其全部程序和数据都要用到。如果一次性地装入其全部程序,造成内存空间的浪费。2) 驻留性。作业装入内存后,便一直驻留在内存中,直至作业运行结束。尽管运行中的进程会因I/O而长期等待,或有的程序模块在运行过一次后就不再需要(运行)了,但它们都仍将继续占用宝贵的内存资源。转载 2014-08-07 10:40:12 · 3919 阅读 · 0 评论 -
11.Windows内存管理的方式
Windows中的内存分为两类:物理内存即实际内存,实存储器。虚拟内存: 用硬盘空间做内存来弥补计算机RAM空间的缺乏。虚拟内存可行性的理论基础:1、进程中的所有内存访问地址都是逻辑地址,这些逻辑地址在运行时动态的被转换为物理地址,这意味着一个进程可以被换入或唤出内存,使得进程可以执行过程中的不同时刻占据内存中的不同区域。2、一个进程可以划分成许多块,在执行过程中,这些原创 2014-08-07 10:16:14 · 1479 阅读 · 0 评论 -
3. 进程同步的几种方式
1、信号量 用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行:初始化,递减和增加,这三种操作都是原子操作。递减操作可以用于阻塞一个进程,增加操作可以用于解除阻塞一个进程。 基本原理是两个或多个进程可以通过简单的信号进行合作,一个进程可以被迫在某一位置停止,直到它接收到一个特定的信号。该信号即为信号量s。为通过信号量s传送信号,进程可执行原语semSignal(原创 2014-08-06 16:36:03 · 4966 阅读 · 0 评论 -
操作系统面试大纲
1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区别。8. 内存池、进程池、线程池。(c++程序员必须掌握)9. 死锁的概念,导致死转载 2014-08-06 16:17:08 · 1097 阅读 · 0 评论 -
1. 进程的有哪几种状态,状态转换图,及导致转换的事件
如上图所示,进程包括三种状态:就绪态、运行态和阻塞态。详细说明如下:注意:创建和退出不是进程的状态。阻塞和就绪的区别:阻塞是等待除CPU以外的资源,而就绪等待的是CPU资源。1)就绪——执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个就绪进程,为之分配了处理机后,该进程便由就绪状态变为执行状态;2)执行——阻塞:正在执行的进程因发生某等转载 2014-08-06 16:25:40 · 39852 阅读 · 1 评论 -
16.操作系统的四个特性
1)并发(concurrence)并行性与并发性这两个概念是既相似又区别的两个概念。并行性是指两个或者多个事件在同一时刻发生,这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多个事件在同一时间的间隔内发生,它是一个较为宏观的概念。在多道程序环境下,并发性是指在一段时间内有多道程序在同时运行,但在单处理机的系统中,每一时刻仅能执行一道程序,故微观上这些程序是在交替转载 2014-08-07 11:04:34 · 2611 阅读 · 0 评论 -
14.几种页面置换算法
1)最佳置换算法(OPT)(理想置换算法)这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,有些页面在内存中,其中有一页将很快被访问(也包含紧接着的下一条指令的那页),而其他页面则可能要到10、100或者1000条指令后才会被访问,每个页面都可以用在该页面首次被访问前所要执行的指令数进行标记。最佳页面置换算法只是简单地规定:标记最大的页应该被置换转载 2014-08-07 10:50:41 · 1259 阅读 · 0 评论 -
10.进程调度算法
一、先来先服务和短作业(进程)优先调度算法1. 先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。2. 短作业(进程)优先调度算法。短作业(进程)优先调度算法(SJ/PF)是指转载 2014-08-07 10:13:58 · 1295 阅读 · 0 评论 -
13.分段分页方式的比较
分段和分页其实都是一种对地址的划分或者映射的方式。 两者的区别主要有以下几点:1)页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要(也是对用户透明的)。段是信息的逻辑单位,它含有一组其意义相对完整的信息(比如数据段、代码段和堆栈段等)。分段的目的是为了能更好的满足用户的需要(用户也是可以使用的)。转载 2014-08-07 10:49:12 · 1261 阅读 · 0 评论 -
5. 线程的实现方式
进程的概念包含两个特点:原创 2014-08-07 09:38:17 · 1413 阅读 · 0 评论 -
9.死锁的概念、导致死锁的原因,导致死锁的四个必要条件,预防死锁的方法、避免死锁的方法
可以把死锁定义为一组相互竞争系统资源或进行通信的进程间的“永久”阻塞。当一组进程中的每个进程都在等待某个事件(典型的情况是等待所请求的资源释放),而只有在这组进程中的其他被阻塞的进程才可以触发该事件,这时就称这组进程发生死锁。因为没有事件能够被触发,所以死锁是永久性的。产生死锁的原因主要是:1) 因为系统资源不足。2) 进程运行推进的顺序不合适。3)原创 2014-08-07 09:54:12 · 8581 阅读 · 0 评论 -
2. 进程与线程的区别
进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访问另一个进程的资源,需要使用进程间通信,比如:管道,文件, 套接字等。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(转载 2014-08-06 16:29:03 · 1710 阅读 · 1 评论 -
8.内存池、进程池、线程池
首先介绍一个概念“池化技术 ”。池化技术 一言以蔽之就是:提前保存大量的资源,以备不时之需以及重复使用。池化技术应用广泛,如内存池,线程池,连接池等等。内存池相关的内容,建议看看Apache、Nginx等开源web服务器的内存池实现。 由于在实际应用当做,分配内存、创建进程、线程都会设计到一些系统调用,系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作。因此,当程序中需转载 2014-08-07 09:50:54 · 1584 阅读 · 0 评论 -
7.用户栈和内核栈
操作系统中,每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。 内核栈是内存中属于操作系统空间的一块区域,其主要用途为:1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,转载 2014-08-07 09:49:59 · 1181 阅读 · 0 评论 -
6.用户态和内核态的区别
内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态;反之,当程序运行在0级特权级上时,就可以称之为运行在内核态。运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成某些它没有转载 2014-08-07 09:45:00 · 3435 阅读 · 1 评论 -
15.动态链接及静态链接
静态链接就是在编译链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是体积可能会相对大一些。动态链接就是在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载原创 2014-08-07 11:03:46 · 889 阅读 · 0 评论