计算机操作系统总结


转载:计算机操作系统知识点总结(有这一篇就够了!!!)_原来如此呀的博客-CSDN博客_操作系统知识点总结

参考链接

image-20210826213430203

img

image-20210826214028660

Linux的文件系统:FAT、NTFS(对FAT进行改进)、EXT2/3/4(扩展文件系统,Linux的文件系统)

六、设备管理

I/O设备的基本概念:将数据输入输出计算机的外部设备;

广义的IO设备

  • 按照使用特性分类:存储设备(内存、磁盘、U盘)和交互IO设备(键盘、显示器、鼠标);
  • 按照信息交换分类:块设备(磁盘、SD卡)和字符设备(打印机、shell终端);
  • 按照设备共享属性分类:独占设备,共享设备,虚拟设备;
  • 按照传输速率分类:低速设备,高速设备;

IO设备的缓冲区:减少CPU处理IO请求的频率,提高CPU与IO设备之间的并行性

SPOOLing技术:虚拟设备技术,把同步调用低速设备改为异步调用,在输入、输出之间增加了排队转储环节(输入井、输出井),SPoOLing负责输入(出)井与低速设备之间的调度,逻辑上,进程直接与高速设备交互,减少了进程的等待时间。

七、实现支持异步任务的线程池

线程池:线程池是存放多个线程的容器,CPU调度线程执行后不会销毁线程,将线程放回线程池重新利用。

使用线程池的原因

  1. 线程是稀缺资源 ,不应该频繁创建和销毁;
  2. 架构解耦,业务创建和业务处理解耦,更加优雅;
  3. 线程池是使用线程的最佳实践。

实现线程安全的队列Queue

  • 队列:用于存放多个元素,是存放各种元素的“池”。
  • 实现的基本功能:获取当前队列元素数量,往队列放入元素,往队列取出元素。
  • 注意:队列可能有多个线程同时操作,因此需要保证线程安全,如下两种情况:

image-20210830160845040

实现基本任务对象Task
实现的基本功能:任务参数,任务唯一标记(UUID),任务具体的执行逻辑

实现任务处理线程ProcessThread:任务处理线程需要不断地从任务队列里取任务执行,任务处理线程需要有一个标记,标记线程什么时候应该停止。
实现的基本功能:基本属性(任务队列、标记),线程执行的逻辑(run),线程停止(stop)。

实现任务处理线程池Pool:存放多个任务处理线程,负责多个线程的启停,管理向线程池的提交任务,下发给线程去执行。
实现的基本过程:基本属性,提交任务(put,batch_put),线程启停(start,join),线程池大小(size)。

实现异步任务处理AsyncTask:给任务添加一个标记,任务完成后,则标记为完成;任务完成时可直接获取任务运行结果;任务未完成时,获取任务结果,会阻塞获取线程。
主要实现的两个函数:设置运行结果(set_result),获取运行结果(get_result)