操作系统*复习回顾*

1.进程和线程的区别?        协程与线程的区别?

   并发与并行的区别?        进程与线程的切换流程?

一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;

调度和切换:线程上下文切换比进程上下文切换要快得多。

进程和线程的区别体现在:调度,切换,拥有的资源和系统的开销上

进程是资源管理的基本单位,线程是程序执行的基本单位。 线程切换比进程快。进程有独立资源线程只能依靠进程得到资源。系统开销线程远小于进程,

协程是组织好的代码流程,我们程序员控制,线程/进程则是操作系统自动分配的,所以协程的效率也比较高,非抢占式的,进程和线程都可以包含多个协程。还有同步式和异步式的区别。

并发是一段时间内,可以运行多个程序,并行是一个时刻可以有多个程序在运行。并发单核处理器就可以,并行则需要多核

进程切换分为:1.切换页表使用新的地址空间,2.切换内核栈和硬件上下文,线程只需要第二步

因为每个进程都有自己的虚拟地址空间,线程是共享所在进程的虚拟空间的

2.为什么虚拟地址空间切换比较耗时?

因为虚拟空间切换需要查找页表,每个进程都有自己的页表,查找速度很慢 ,通常使用cache    TLB 来缓存常用的地址映射,加快查找。但是进程切换后页表也切换了,TLB失效了又。

3.进程间通信方式有哪些?        进程间同步方式有哪些?

   线程同步的方式有哪些?        线程的分类?

管道,信号,信号量,消息队列,共享内存,Socket

临界区,信号量,互斥量,事件

临界区,信号量,互斥量,事件

用户级线程和内核级线程,内核级线程依赖于内核,用户级线程仅存在于用户级中,不依赖于操作系统核心,应用进程利用线程库来完成创建和管理,速度比较快,操作系统内核无法感知用户级线程的存在。

4.什么是临界区?如何解决冲突?

一次仅允许一个进程使用的资源称为临界资源。

解决冲突方法:一次仅允许一个进程进入,进入临界区的进程要在有限时间退出,如果进程不能进入自己的临界区,应该让出CPU,避免进程出现“忙等”条件。

5.什么是死锁?死锁产生的条件?如何处理死锁问题?

两个或多个并发程序中,每个进程持有资源又等待其他进程释放他们保持的资源,未改变这种状态的情况下都不能向前推进。两个或多个进程的无期限阻塞,互相等待

互斥条件、请求和保持条件、不剥夺条件、循环等待条件

如何处理? 死锁预防        死锁避免(银行家)        死锁检测        死锁解除        鸵鸟策略

6.进程调度有哪几种?进程有哪些状态?

先来先服务,短作业优先,最短时间优先,时间片轮转,优先级调度。

7.什么是分页? 什么是分段?这俩有什么区别?

把内存划分为大小相等且固定的块,作为主存的基本单位。程序分布在页面中,页面散落在内存里,所以需要页表查找,具体查找一段数据,要两次内存访问,先通过页表找到地址加上偏移量,再找到数据

分段是为了满足程序员的逻辑需求,像数据共享,数据保护,动态链接 等等(分页是提高内存利用率),地址是二维的,一维是段号,二维是段内地址。

分页对程序员是透明的,分段需要程序员自己划分每个段,        页的大小不可以改,段可以

地址空间不一样,分页一维分段二维,       分页为了虚拟内存获得更大地址空间,分段为了数据保护共享。

8.什么是交换空间?        物理地址、逻辑地址、有效地址、线性地址、虚拟地址的区别?

物理内存不足时,一些不常用的页可以被交换出去,腾给系统。程序启动时很多内存页被用来初始化,之后不再需要可以交换出去。物理内存和交换空间的总容量就是虚拟内存的可用容量

物理地址就是内存中真正的地址,相当于门牌号

段内偏移地址---有效地址,也是逻辑地址

线性地址可以看作是虚拟地址,虚拟地址不是真正的物理地址,但是最终会映射为物理地址。

9.页面替换算法有哪些?

最好的算法是老化算法和WSClock算法,分别是基于LRU和工作集的算法,都具有良好的性能并能够有效的实现。

10.什么是缓冲区溢出?有什么危害?什么是虚拟内存? 虚拟内存的实现方式有哪些?

溢出就是填充的数据超过了原本的容量,覆盖在了合法数据上

危害是:程序崩溃,导致拒绝服务        跳转并执行一段恶意代码。

虚拟内存是让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

虚拟内存中,允许将一个作业分多次调入内存中。虚拟内存实现需要建立在离散分配的内存管理方式基础上。请求分页存储管理。请求分段存储管理。请求段页式存储管理。

11.讲一讲IO多路复用?硬链接和软链接有什么区别?

IO多路复用是指内核一旦发现进程指定的一个或多个IO条件准备读取,他就通知该进程

硬链接创建的是独立的虚拟文件,包含了原始文件的信息和位置,本质是同一个文件。

就是在目录下创建一个条目,记录着文件名与inode编号,这个inode就是源文件的inode,删除任意一个条目,文件还是存在,只要引用数量不为0,但是硬链接有限制,不能跨越文件系统,不能对目录进行链接。修改硬链接原来的也修改,

软链接也称符号链接。

可以理解为windows的快捷方式,记录的是路径,建立的是符号链接,源文件删除了,链接文件就打不开了。

12.中断的处理过程?中断和轮询有什么区别?

保护现场,开中断,中断处理,关中断,恢复现场。

轮询:CPU对特定设备轮流询问        中断:通过特定事件提醒CPU。

轮询:效率低等待时间长,CPU利用率不高        中断:容易遗漏问题,CPU利用率不高。

13.什么是用户态和内核态?是如何进行切换的?

内核态运行的程序可以访问计算机的任何数据和资源,不受限制,用户态运行的程序只能受限的访问内存。        目的:对访问能力进行限制,防止随意清理内存导致系统崩溃。

切换通过操作系统的系统调用进行,用户态->内核态 叫trap进内核

14.Unix常见的IO模型

对于一次IO访问,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。read操作发生时,会经历:等待数据准备就绪。将数据从内核拷贝到进程中。

15.select、poll和epoll之间的区别?

这三者都是IO多路复用的机制,三者本质也都是同步I/O都需要在读写事件就绪后自己进行读写。select和poll的时间复杂度都是O(n),epoll的时间复杂度是O(1)

poll和select都是无差别轮询流,找出能读出数据或者写入数据的流并对其操作,但是poll没有最大连接数限制,基于链表存储的。

epoll类似于event poll 会把IO进行通知,是事件驱动的

16.如何理解虚拟内存

内存空间利用率问题,读写内存的安全性问题,进程之间的安全性问题,内存读写的效率问题

(待补充)

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值