0%

处理器管理

主存中存在的进程数量是多于处理器数目的,那么如何动态的把处理器分配给就绪队列中的一个进程,使之执行,处理器调度是操作系统设计的核心问题之一

处理器调度分级

对于不同的系统,如多道批处理系统、分时系统和实时系统中,采用的是不同的调度方式和算法

高级调度

高级调度又称为作业调度或长程调度,主要是根据某种算法,把外存上处于后备队列中的那些作业调入内存,调度对象是作业(Job)

在批处理系统中,是以作业为基本单位从外存调入内存的,作业不仅包含了通常的程序和数据,而且还有一份作业说明书,系统根据作业说明书来对程序进行控制,当作业进入系统时,批处理系统为每个作业建立一个作业控制块(JCB,Job Control Block),保存了系统对作业进行管理和调度所需的全部信息

作业调度就是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,并按照一定的算法,从外存的后备队列中选取某些作业调入内存,为它们创建进程、分配资源

阅读全文 »

操作系统简介

操作系统是管理计算机硬件和软件资源的程序

计算机操作系统的目标

  • 有效性
  • 方便性
  • 可扩充性
  • 开放性

计算机操作系统的作用

  • 是用户与计算机硬件系统之间的接口,可以使用命令行、系统调用、图形界面这三种方式来进行操作
  • 是计算机系统资源的管理者,可以进行处理器管理,用于分配和控制处理机;存储器管理,负责内存的分配与回收;IO设备管理,负责I/O设备的分配与操作;文件管理,负责文件的存取、共享和保护
  • 是计算机资源的抽象
阅读全文 »

netty简介

netty是一个异步的、基于事件驱动的网络应用框架,用来快速开发高性能、高可靠的网络IO程序,主要针对在TCP协议下,面向客户端的高并发应用,本质是一个NIO框架

三种I/O模型

目前java支持三种I/O模型,BIO、NIO、AIO

BIO

同步阻塞IO,一个连接请求对应一个线程,如果该连接没有做任何事情会造成不必要的开销,在java中就是服务端创建一个ServerSocket,然后客户端用一个Socket去连接服务端的ServerSocket,ServerSocket接收到一个连接请求就创建一个Socket和一个线程去跟客户端Socket进行通讯,客户端发送一个请求,服务端进行处理后返回响应,在响应返回前,客户端进行阻塞等待

缺点是每次一个客户端接入,都需要在服务端创建一个线程来对这个客户端进行服务

阅读全文 »

加载自定义yml配置文件

springboot默认加载的是application.yml/properties配置文件,对于自定义的properties配置文件使用@PropertySource和@ConfigurationProperties注解搭配使用也可以进行加载注入,但是properties配置文件没有yml配置文件有层次感,如果使用自定义的yml配置文件却发现springboot并没有将yml中的配置属性注入进去

这里可以自定义PropertySourceFactory来加载yml(本质就是自己解析yml配置文件,转换成Properties)

阅读全文 »

网络层简析

网络层作用是实现两个网络系统之间的数据透明传送,具体包括路由选择、拥塞控制和网际互联等,需要将源端数据包发送到接收方,在此过程中需要经过多个中间路由器,所以网络层必须知道网络拓扑结构(所有路由器和链路的集合),并从中选择出适当的路径,与主机网络层和传输层对话,主机网络层通过线缆、光纤或其他介质将数据移动到远程系统的主机网络层,然后再通过上述各层将数据逐渐上移传输到远程系统的应用层

阅读全文 »