zoukankan      html  css  js  c++  java
  • 操作系统基础知识总结(一)

    1. 进程和线程的区别

    进程

    进程,即正在运行的程序,程序从硬盘载入到内存就变成进程。进程是资源的拥有者,每个进程都拥有着自己的内存空间与多个线程。

    线程

    线程是指令的执行者,是计算机执行指令的基本单元,一个进程可以拥有多个线程。线程的引入主要有如下原因:

    1. 响应:与进程相比,创建线程不涉及或较少涉及资源分配,因此速度较快
    2. 资源共享:线程间可以共享资源,同一个进程内两个线程通信快
    3. 经济:创建线程不涉及或较少涉及资源分配
    4. 适合计算机的多处理器架构

    线程既有共享的资源,也有自己私有的资源,JVM中线程持有的资源一般如下:

    • PC(程序计数器):线程私有
    • 栈:线程私有
    • 堆:线程共享
    • 方法区:线程共享

    在操作系统中,线程还会细分为用户空间的用户级线程与内核空间的内核级线程,两种线程之间还有多种关系模型,在此不再赘述。

    2. 死锁的必要条件,怎么处理死锁

    死锁有四大必要条件,缺一不可:

    • 互斥:至少有一个资源同时只能被一个进程所拥有的
    • 占有且等待:一个进程必须持有至少一个资源去等待其他的资源
    • 非抢占时:资源不能被抢占,一个资源只有当进程执行完毕才会被释放
    • 循环等待:多个进程循环等待其他进程释放资源

    对付死锁我们大致可以从三个方面入手:

    1. 死锁预防与避免:不允许程序死锁
    2. 死锁检测与恢复:允许程序死锁,死锁后进行恢复工作
    3. 忽略死锁:出现死锁直接不管(大多数操作系统的做法)

    3. 内存管理方式:段存储,页存储,段页存储

    段存储示意图如下:

    段式存储系统

    用户程序通过逻辑内存的段号查找段表,获取段的物理内存初始地址与长度,然后操作系统即可在物理内存上读取相应的数据。

    使用段存储会出现外部碎片。

    页存储示意图如下:

    页式存储系统

    操作系统先把内存空间切分成大小相等的块,用户程序根据自身的大小占用一定的帧。

    用户程序通过逻辑内存的页号去页表查找对应的物理内存的块号(帧号),然后操作系统在物理内存上读取相应的数据。

    使用页存储会出现内部碎片。

    有些操作系统还会有TLB(页表缓存),把一些常用的页面放在TLB中方便快速查询,要是TLB中查询失败再去页表查询。

    段页存储即先分段再分页的内存管理办法,其示意图如下:

    段页式存储管理

    4. 进程的几种状态

    进程有以下几种状态:

    • New(创建状态):表示进程正在被创建
    • Running(运行状态):表示进程正在执行
    • Waiting(等待状态):表示进程正在等待事件的发生
    • Ready(就绪状态):表示进程已经准备好,等待分配CPU处理器
    • Terminated(终止状态);表示进程已经执行完毕,被终止
  • 相关阅读:
    Windows Server 2003下ASP.NET无法识别IE11的解决方法
    SQL Server2005中使用XML-数据类型、查询与修改
    连接SQLServer时提示“但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0
    无法将类型为 excel.applicationclass 的 com 强制转换为接口类型 的解决方法。
    C# WinForm使用Aspose.Cells.dll 导出导入Excel/Doc 完整实例教程
    技巧 获取电脑硬件信息 -转发
    浏览器无需下载插件 解决网页长截图的小技巧 -转发
    note 9 列表、时间复杂度、排序
    note 8 字符串
    note 7 递归函数
  • 原文地址:https://www.cnblogs.com/KingIceMou/p/6984110.html
Copyright © 2011-2022 走看看