面试八股文-操作系统

操作系统

常用的Linux命令

mkdir cd touch cp mv

ls chmod cat tail rm

ps kill top

硬链接和软链接的区别

它们都是实现文件共享的方式

  • 硬链接通过ln来创建,软链接通过ln -s来创建
  • 删除软链接不会影响源文件,删除源文件会导致所有软链接都失效,软链接相当于windows的快捷方式
  • 删除硬链接会使连接数减1,当连接数减为0时,硬链接才会被删除

线程,进程,协程的区别

  • 进程是资源分配的最小单位,当可执行程序被装载到内存中运行就会生成进程.
    • 进程拥有自己独立的内存空间
  • 线程是CPU调度的最小单位,一个进程可以拥有多个线程
    • 线程拥有自己独立的栈空间和寄存器上下文,共享进程的堆空间和代码段空间
    • 线程切换由系统调度,在内核态完成.
  • 协程是一种用户态线程,多个协程可以绑定一个或多个内核线程
    • 协程切换由协程调度器在用户态完成,所以切换速度很快

多线程,多进程的优缺点

多线程:

  • 优点:

    • 共享内存空间,只需通过全局变量就可实现线程间通信
    • 创建,销毁,切换 开销较小
  • 缺点:

    • 一个线程崩溃可能导致整个进程崩溃
    • python的多线程不能充分利用多核CPU

多进程

  • 优点:
    • 内存隔离,进程间不会相互影响,可靠性高
    • 可以实现多台机器上的分布式应用
  • 缺点:
    • 创建,销毁,切换 开销较大
    • 进程间通信较为复杂

进程间通信的方式

  • 套接字 (socket)
  • 管道 (Pipe)
  • 队列 (Queue)
  • 信号
  • 共享内存

分段和分页机制

分段: 把 虚拟内存空间 映射到 物理内存空间, 还把 虚拟内存地址划分为代码段,数据段,堆栈段等,从而决定了一个虚拟内存地址能否被写入,能否被执行,分段机制 实现了不同进程间的地址空间隔离数据保护

分页: 把内存段继续细分为一个个内存页,进程运行时只把必要的页装入内存,而把暂不需要的内容放到硬盘,分页机制充分利用的程序的局部性原理,提高了内存的使用率

局部性原理

主要分为时间局部性和空间局部性。

时间局部性: 如果程序中某个数据被访问,不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)

空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据结构在内存中都是连续存储的)

孤儿进程 与 僵尸进程

  • 孤儿进程: 当父进程退出,子进程还在运行,子进程就成了孤儿进程,会被init进程收养,ppid变为1

  • 僵尸进程: 当子进程退出时,父进程没有调用wait()或waitpid()获取子进程状态,那么子进程的pid等资源仍会保留在系统中,成为僵尸进程

    • 解决: 子进程退出时,父进程会收到一个SIGCHLD信号,我们应该拦截这个信号,调用一下wait()或waitpid()函数

死锁是什么? 如何避免?

死锁是指 两个或两个以上的进程,互相等待对方手里的不可剥夺资源而造成的阻塞现象

  • 当进程获取不到所需全部资源时,释放已占有的资源 (破坏不可剥夺条件)
  • 使用银行家算法,在资源分配前预先判断本次分配是否会导致系统进入不安全状态

内存抖动

进程不断产生缺页中断,导致刚换出硬盘的页面又换入内存,刚换入内存的页面又要换出到硬盘. 可通过增大物理内存,终止一些进程,优化页面置换算法等方式解决

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值