Java进阶之路(四) 计算机组成原理(操作系统、进程和线程、内存管理)

计算机组成原理

操作系统的四个特性

  • 并发:同一段时间内多个程序执行(注意区别并行和并发,前者是同一时刻的多个事件,后者是同一时间段内的多个事件)
  • 共享:系统中的资源可以被内存中多个并发执行的进线程共同使用
  • 虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个
  • 异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进

进程与线程

进程的状态:1:就绪状态,2:执行状态,3:阻塞状态(多线程时也是这些状态)

分类:

  • 僵尸进程:子进程结束,父进程没有明确答复操作系统,占用大量PID号;解决方法:1、调用wait()长时间阻塞父进程.2、使父进程必须被结束.3、写一个信号处理函数,在其中调用wait()
  • 孤儿进程:父进程退出,子进程还在运行,子进程将被init收养,称为孤儿进程
  • 守护进程:将进程改变为孤儿进程,从而进入后台进程组,常驻在内存中

进程与线程的对比

进程是系统进行资源调度和分配的基本单位;线程是CPU调度的基本单位。

进程 = 资源 (包括寄存器值,PCB,内存映射表)+ TCB(栈结构)
线程 = TCB(栈结构)

线程 的资源是共享的
进程 间的资源是分隔独立的,内存映射表不同,占用物理内存地址是分隔的

线程 的切换只是切换PC,切换了TCB(栈结构)
进程 的切换不仅要切换PC,还包括切换资源,即切换内存映射表

进程间通信方式

signal:信号通信,相当于传递过去一个动作的信号

file:文件描述符,用于对文件进行操作

pipe:管道通信,单向的数据流动的通道

shm:共享内存,各个进程都能共同访问的共享的内存区域

sem:信号量,表示的是对shm的访问规则

msg:消息体,和管道类似,但不是连续的

socket:网络之间不同进程通信

虚拟内存和物理内存

在这里插入图片描述

页面置换算法

1:最佳置换算法(Optimal):一种理论的算法,选着淘汰的页面是以后一定不再使用的页面(理想化的),该算法无法实现,只能作为其他算法好坏的一个评价对比。

**2:先进先出(FIFO)算法:**总是最先淘汰最先进去的页面,该算法容易实现。缺点:通常程序调入内存的先后顺序和程序执行的先后顺序不一致,导致缺页率高。

**3:最近最久未使用算法LRU:**算法赋予每个页面一个访问字段,用来记录上次页面被访问到现在所经历的时间t,每次置换的时候把t值最大的页面置换出去(实现方面可以采用寄存器或者栈的方式实现)。

4:时钟算法clock(也被称为是最近未使用算法NRU):页面设置一个访问位R,并将页面链接为一个环形队列,页面被访问的时候访问位设置R为1。页面置换的时候,如果当前指针所指页面访问R为0,那么置换,否则将其置为0,循环直到遇到一个访问为位0的页面。

但是这个方法有缺点:缺页比较少的时候(最近没有使用淘汰中的“最近”太长了),所有的R都为1(很少变成0),每次都要转一圈才能找到换出去的页,退化成FIFO,效率不高。

改进: 双指针,一个快,一个慢,像时钟一样 (定时清除R位)(更像clock)
快时钟做R的清0定时清0,等到慢指针转到这里的时候R=0,说明在定时时间片内没有备访问,该页可以被替换了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值