乐趣区

关于java:30-操作系统

操作系统是运行在计算机上的软件程序,用来治理计算机硬件和软件资源。

操作系统内核负责

  • 零碎内存治理
  • 硬件设施治理
  • 文件系统治理
  • 应用程序治理

零碎调用

依据过程拜访资源的特点,把过程在零碎上的运行分为:

  • 用户态:读取用户程序的数据
  • 零碎态:拜访计算机的资源
    运行程序根本是在用户态,须要拜访以下资源时,须要通过零碎调用的形式,向操作系统提出服务申请,由操作系统代为实现。
  • 设施治理:实现设施的申请、开释、启动等
  • 文件治理:实现文件的读、写、创立、删除等
  • 过程管制:实现过程的创立、撤销、阻塞、唤醒等
  • 过程通信:实现过程之间的消息传递或信号传递等
  • 内存治理:实现内存的调配、回收以及获取作业占用内存区大小及地址等

过程与线程的区别

一个过程能够有多个线程,共享过程的堆和办法区(元空间),独享本人的程序计数器,虚拟机栈和本地办法栈。
各过程互相独立,各线程可能相互影响。

过程间的通信形式

  1. 管道 / 匿名管道:用于具备亲缘关系的父子过程间或者兄弟过程之间的通信。只存在于内存中。
  2. 有名管道:遵循先进先出,以磁盘文件的模式存在,实现本机任意两个过程通信。
  3. 信号:用于告诉过程某个事件曾经产生。
  4. 音讯队列:音讯的链表,寄存在内核中,由音讯队列标识符标识。要先进先出的生产,但能够随机查问。只有内核重启(即操作系统重启)或者显式删除一个音讯队列时才会被删除。和音讯队列相比,信号承载的信息量少,管道只能承载无格局字节流且缓冲区大小受限。
  5. 信号量:是个计数器,用于多过程对共享数据的拜访,用意在于过程间同步。
  6. 内存共享:使多过程同时拜访同一块内存空间,须要依附某种同步操作,例如互斥锁或信号量。
  7. 套接字:用于在客户端和服务器之间通过网络通信,套接字是反对 tcp/IP 的网络通信的基本操作单元。

线程间的同步的形式

  1. 互斥量:持有“互斥量(就是锁)”的线程才有拜访公共资源的权限。
  2. 信号量:容许同一时刻多个线程拜访对立资源,然而须要管制最大线程数量。
  3. 事件:wait/notify 通过告诉保障多线程同步

过程的调度算法

为了实现最大 cpu 利用率

  1. 先到先服务算法 FCFS:从就绪队列当选第一个过程,立刻执行移植到被阻塞放弃占用 cpu。
  2. 短作业优先算法 SJF:从就绪队列当选执行工夫最短的过程,立刻执行直到被阻塞放弃占用 cpu。
  3. 工夫片轮转调度算法:每个过程轮流执行一个工夫片
  4. 多级反馈队列调度算法:高优先级和短时间的优先实现。unix 零碎应用这种算法。
  5. 优先级调度:依据内存要求、工夫要求或其余资源要求制订优先级,依照优先级执行。

内存治理

内存的调配与回收(malloc 函数申请内存,free 函数开释内存)
地址转换:将逻辑地址转换成物理地址

内存管理机制

  • 间断调配治理形式

    • 块式治理

    远古时代,内存分为几个固定大小的块,每个块中只蕴含一个过程,

  • 非间断调配治理形式

    • 页式治理

    把主存分为较小的页,通过“页表”对应逻辑地址和物理地址,进步内存利用率。

    • 段式治理

    段比页更小,每个段定义一组逻辑信息,例如主程序段 main,子程序段 X,数据段 D,栈段 S,通过“段表”对应逻辑地址和物理地址。

    • 段页式治理

    每个段分成若干页

快表和多级页表

内存治理中,最重要的两点是:

  • 虚拟地址到物理地址的转换要快
  • 解决虚拟地址空间大,页面也会很大的问题

    快表

    页表的缓存。

    多级页表

    像树一样,一级页表映射二级页表地址,二级页表映射物理地址。
    为了节俭页表占用的内存空间,未被实在占用的二级页表能够暂不创立。
    或把二级页表放在磁盘里。

分页和分段的共同点和区别

  • 共同点:都是为了进步内存利用率,缩小内存碎片。都是离散存储的,页内、段内都是间断的。
  • 区别:页大小固定,由操作系统决定,段大小不固定,取决于以后运行的程序。段式逻辑单位,分为代码段、数据段等。

cpu 寻址

  • 为什么要有虚拟地址:间接拜访物理地址会有意无意的造成操作系统和程序解体
  • 应用虚拟内存的益处:能够应用相邻的虚拟地址拜访物理内存中不相邻的大内存缓冲区,第二条没看懂,不同过程应用的虚拟地址彼此隔离,一个过程无奈批改由另一过程或操作系统应用的物理内存。
退出移动版