操作系统总结(二)

(一)请分别简单说一说进程和线程以及它们的区别。

·        进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。

·        线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

·        一个进程可以有多个线程,多个线程也可以并发执行

 

(二)线程同步的方式有哪些?

·        互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

·        信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。

·        管程

 

(三)进程的通信方式有哪些?

主要分为:信号、管道、消息队列、共享内存、SOCKET

·        消息队列是消息的链表,存放在内核中并由消息队列标识符标识。

·        信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

·        共享内存就是映射一段能被其它进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。

 

(四)什么是缓冲区溢出?有什么危害?其原因是什么?

缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

危害有以下两点:

·        程序崩溃,导致拒绝额服务

·        跳转并且执行一段恶意代码

造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。

 

 

(五)什么是死锁?死锁产生的条件?

在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源;

死锁的特征:

·        互斥条件:一个资源一次只能被一个进程使用

·        请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放

·        不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺

·        循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系 

 

说一说死锁的处理基本策略和常用方法。

解决死锁的基本方法如下: 

预防死锁、避免死锁、检测死锁、解除死锁 

解决四多的常用策略如下: 

鸵鸟策略、预防策略、避免策略、检测与解除死锁 

 

(六)进程有哪几种状态?

·        就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源

·        运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU

·        阻塞状态:进程等待某种条件,在条件满足之前无法执行 

 

(七)分页和分段有什么区别?

·        段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。

·        段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定

·        段向用户提供二维地址空间;页向用户提供的是一维地址空间

·        段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

(八) 操作系统中进程调度策略有哪几种?

FCFS(先来先服务),优先级,时间片轮转,多级反馈

 

(九)用户态切换到内核态的3种方式

a. 系统调用; b. 异常; c. 外围设备的中断

 

 

 

 

 (十)内存池、进程池、线程池

首先介绍一个概念池化技术 ”。池化技术就是:提前保存大量的资源,以备不时之需以及重复使用。池化技术应用广泛,如内存池,线程池,连接池等等。内存池相关的内容,建议看看ApacheNginx等开源web服务器的内存池实现。由于在实际应用当做,分配内存、创建进程、线程都会设计到一些系统调用,系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作。因此,当程序中需要频繁的进行内存申请释放,进程、线程创建销毁等操作时,通常会使用内存池、进程池、线程池技术来提升程序的性能。

 线程池:线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当需要一个开辟一个线程去做具体的工作时,就会唤醒线程池中的某一个睡眠线程,让它去做具体工作,当工作完成后,线程又处于睡眠状态,而不是将线程销毁。

进程池与线程池同理。

内存池:内存池是指程序预先从操作系统申请一块足够大内存,此后,当程序中需要申请内存的时候,不是直接向操作系统申请,而是直接从内存池中获取;同理,当程序释放内存的时候,并不真正将内存返回给操作系统,而是返回内存池。当程序退出(或者特定时间)时,内存池才将之前申请的内存真正释放。

 

 

(十一) 动态链接及静态链接

静态链接就是在编译链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是体积可能会相对大一些。

动态链接就是在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的。优点是多个程序可以共享同一段代码,而不需要在磁盘上存储多个拷贝,缺点是由于是运行时加载,可能会影响程序的前期执行性能。

 

 

(十二)几种页面置换算法,会算所需换页数。(LRU用程序如何实现?)

1)最佳置换算法(OPT)(OPTimalreplacement理想置换算法)

 

 

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

 

 

3)最近最久未使用(LRU)算法

 


 

(十三)操作系统的四个特性

并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件)

共享:系统中的资源可以被内存中多个并发执行的进线程共同使用

虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个

异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值