• 操作系统面试题整理


    1. 操作系统进程与线程的区别,线程的几种状态

    进程:资源分配的基本单元

    线程:任务调度的基本单元

    进程包括:1. 占有的资源(内存,打开的文件,访问的网络)   (2)上下文 

    线程执行过程中共享资源,独占上下文

    线程/进程状态:

    就绪 运行 阻塞

    挂起的标志就是换出到外存,在外存的进程肯定是不能执行的,所以挂起的目的就很明显,在内存资源不足时,需要把一些进程换出到外存,给着急运行的进程腾地方。

    2. 僵尸进程和孤儿进程的区别

    孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作

    僵尸进程:当进程退出父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会在以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。僵尸进程会造成资源浪费。

    父进程调用wait()阻塞自己,等待子进程退出   fork()和wait()成对出现

    3. 进程的调度算法

    时间片轮转

    优先权调度算法:抢占式(分时系统linux)和非抢占式(批处理,实时性不高)

    多级反馈队列(综合了时间片轮转和抢占式优先权调度算法)

    优点:高优先级快速响应,短作业快速完成

    多个优先级队列,高优先级队列时间片短,队列内部遵循先来先服务的原则。只有当高优先级队列中的进程调度完毕,才会调度下一个队列中的进程,上层队列中未运行完的进程会被放到下一个队列中。

    4.多线程代码在单核CPU上运行是否还要考虑线程安全问题?

    需要,单核CPU不能保证调度的顺序性和任务的原子性。

    进程之间的通信方式有哪些?

    按下CTRL C会发生什么?

    按下CTRL C会发送SIGINT信号,这个信号与SIGTERM一样可以被进程捕获,与SIGTERM不同的是,进程在收到SIGINT信号后,会向其子进程也发送SIGINT信号,因此SIGINT会终止以其为根的进程树,而SIGTERM只会终止当前进程。

    创建进程时会创建那些资源?

    虚拟内存是什么?为什么要用虚拟内存?原理是什么?

    kill -9 pid 和  kill pid之间的区别是什么?

    kill -l 可以查看所有的信号

    kill -n pid  表示将信号n发送给进程

    9号信号是SIGKILL, 收到这个信号的进程会被强制杀死

    15号信号是SIGTERM, 收到这个信号的进程会清理资源终止程序,也可能不中止,kill pid

    因此这两个命令的区别在于发送给进程的信号不一样,前者表示强制中止进程,这个信号不能被捕获,后者表示中止进程,进程可以捕捉这个信号,执行信号处理函数,也可以忽略这个信号。

    sigkill信号的缺点:进程在运行时突然终止,进程在结束后不能自我清理

    删除一个已经被进程打开的文件会发生什么?

    inode节点会保存一个文件的硬链接数和打开这个文件的进程数。删除一个文件时,文件系统会删除其相关的目录项,然后将该文件inode上的硬链接数减一,当硬链接数和打开这个文件的进程数都为0时,才会真正释放磁盘空间。因此当文件被进程打开时,删除文件不会释放文件的inode和数据块。进程控制块会与已经打开文件的inode相关联,并不是文件名,因此删除文件并不会让进程找不到文件。创建一个和被删除文件同名的文件时,文件系统会创建新的目录项和inode节点,因此进程还是会继续使用被删除的文件。

    换页算法有哪些?

  • 相关阅读:
    Javascript中对文字编码的三个函数
    Web.config文件中关于Cookie安全性的考量和设置
    面试时被问到的问题
    JQuery中查找父元素,子元素,追加元素,插入元素和删除元素 及其他常用方法
    JQuery插件开发学习
    Umbraco image中使用Crop URL
    SQL中的row_number() over()解释
    GEO,IGSO,MEO,LEO
    计算机网络端口常识
    VMnet1和VMnet8 未识别的网络的解决方法
  • 原文地址:https://www.cnblogs.com/catpainter/p/12452302.html
Copyright © 2020-2023  润新知