博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统面试
阅读量:2241 次
发布时间:2019-05-09

本文共 1011 字,大约阅读时间需要 3 分钟。

1.进程,线程,管程,协程

进程:

1.在非多线程OS中,进程是资源分配调度和独立运行的基本单位。关键字:独立运行,拥有资源。

 

2.在多线程OS中,进程只是资源分配的基本单位,而不是独立运行的基本单位,多线程OS把线程作为是资源调度和独立运行的基本单位

线程:

多线程OS把线程作为是资源调度和独立运行的基本单位

管程:

管理共享资源的数据结构的资源管理程序称为管程。

协程:

又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。

 

经典问题:生产者消费者问题,哲学家就餐问题

 

 

2.处理机调度算法

1.先来先服务(FCFS)

2.短作业优先(SJF)

3.优先级调度算法(PSA)

4.高响应比优先调度算法(HRRN)

 

 

1.什么是死锁?

银行家算法:一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系银行家算法银行家算法统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。

线程1锁住A,等待B

线程2锁住B,等待A

 

2.自旋锁,互斥锁?

3.静态重定位和动态重定位?

 

  • 静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。 
    • 优点:是无需增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。 
    • 缺点:(1)程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动。这不利于内存空间的有效使用。(2)各个用户进程很难共享内存中的同一程序的副本。 
  • 动态重定位:是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。 
    • 优点:(1)程序占用的内存空间动态可变,不必连续存放在一处。(2)比较容易实现几个进程对同一程序副本的共享使用。 
    • 缺点:是需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。 
      现在一般计算机系统中都采用动态重定位方法。

 

转载于:https://www.cnblogs.com/umrx/p/7625527.html

你可能感兴趣的文章
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>