不得不了解的操作系统

1、进程和线程的区别

进程是操作系统对一个正在运行的程序的抽象。是系统进行资源分配的基本单位。一个系统上可以同时运行很多个进程,而每个进程都好像在独占的使用硬件,而并发运行是说一个进程的指令和另一个进程的指令交替执行。操作系统保持跟踪进程运行所需的所有状态信息。这种状态就叫上下文;线程是进程内部的一条执行路径,是系统进行调度的基本单位。在现代操作系统中,一个进程可以由多个被称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享代码和全局数据。

2、孤儿进程和僵死进程

僵死进程:子进程先于父进程运行结束,而父进程还没有调用wait获取子进程的退出码,子进程变成僵尸进程。一个终止了但还未被回收的进程被成为僵死进程。
孤儿进程:父进程先于子进程运行结束,子进程变成孤儿进程,孤儿进程将会统一被它的养父init进程终止。

3、死锁及避免

多个进程或线程访问一组竟态资源时候,出现永久阻塞的问题。产生死锁的三个原因:资源不足、程序运行顺序不当、资源分配不当
解决办法:打破死锁的四个条件之一{1.互斥 2.请求和保持 3.不可抢占 4.循环等待}

4、进程间通讯的方式

信号量、共享内存、消息队列、管道、套接字(socket)

5、管道和消息队列对比

管道通信的中间介质是文件,通常这种文件是管道文件,一个进程为写进程,另一个进程为读进程,两个进程协调配合,不断的进行读和写,构成双方传递信息的流水线;消息队列通信以信息缓冲区为中间介质,通信双方接收和发送操作均是以消息为单位,在存储器中,消息缓冲区被组织成队列,被称为消息队列。

6、fork进程的底层

1.分配进程pid
2.分配进程描述符pcb,同时分配好内核栈
3.复制进程实体,如打开的文件、工作目录、进程地址空间等
4.用父进程内核栈上存放的现场信息初始化子进程的现场信息,并将eax置0
5.将父进程的时间片分子进程一半,设置进程状态为就绪。

7、上下文切换的流程

1.保存进程A的状态(寄存器和操作系统数据)
2.更新pcb的信息,将进程A的运行态改变
3.将进程A的pcb放入相关状态的队列
4.将进程B的pcb信息改为运行态,并执行进程B
5.B执行完后从队列中取出进程A的pcb,恢复进程A切换时的上下文,继续执行进程A
6.同一进程的用户级线程切换只用保存程序计数器、栈指针、用户寄存器的内容,不需要模式切换,但会导致线程阻塞和无法利用多处理器。内核级线程的切换可以解决这些问题,但处理保存上下文,还要进行模式切换。

8、进程的调度算法

1.先来先服务
2.时间片轮转
3.多级反馈队列算法
4.最短进程优先
5.最短剩余时间优先
6.最高响应比优先

9、同步和异步的概念

同步是一个任务一个任务的完成,按照顺序一个一个来,而异步是接收一个任务,然后给后台,然后接收下一个任务,谁的先读取完就先运行谁的。

10、静态链接和动态链接

静态链接:我们在开发的时候不能把所有的代码都放在一个源文件中,就会产生多个源文件,而每个源文件之间是独立的,但又存在一定的依赖关系,一个源文件可能要使用另一个源文件中的函数,为了满足这样的依赖关系,我们需要将这些源文件产生的目标文件进行链接,这个过程就是静态链接。静态链接会出现空间浪费、更新困难的问题,但在执行的速度比动态链接是要快的。
动态链接:就是把程序按照模块拆分成各个独立的部分,在程序运行时才将它链接成一个完整的程序。它解决了静态链接的两个问题,但由于在每次执行时链接,执行的速度会降低,性能有一定的影响。

11、缺页处理过程

CPU引用了一个未缓存在DRAM中的字,地址翻译硬件推断出此字未被缓存,并且触发了一个缺页异常。缺页异常调用内核中的缺页异常处理程序,该程序会选择一个牺牲页,在此页上存放缺页,内核将它复制在磁盘,修改此页的条目,更新PTE(有效位),异常程序返回 后,它会重新启动导致缺页的指令,此时缓存命中,也就能正常处理了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值