其他分享
首页 > 其他分享> > WJ的操作系统知识点总结

WJ的操作系统知识点总结

作者:互联网

目录


【操作系统篇】

>>>计算机网络篇传送门,超详细总结

PS:本文不适合完全没有OS基础的阅读


什么是操作系统


系统调用


进程


进程和线程

线程有自己的 stack,但是没有单独的 heap,也没有单独的 address space。只有进程有自己的 address space,而这个 space 中经过合法申请的部分叫做 process space。Process space 之外的地址都是非法地址。当一个线程向非法地址读取或者写入,无法确认这个操作是否会影响同一进程中的其它线程,所以只能是整个进程一起崩溃。
当一个线程崩溃时,很可能会导致其所属进程的所有线程崩溃。


协程

英文Coroutines是一种比线程更加轻量级的存在。

正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程

协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。

这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。Java的原生语法中并没有实现协程,Python、Go等语言有。
但是有开源框架模拟了协程的功能。


进程的状态和转化

进程的状态

状态之间的切换


进程的上下文切换

什么是上下文?
上下文就是运行任务时所依赖的环境,比如寄存器和程序计数器。

CPU把当前任务的状态保存到PCB,然后服务下一个任务。
任务的状态保存及再加载就叫作线程的上下文切换

上下文切换指的是内核在CPU上对进程或线程进行切换。上下文切换过程中的信息被保存在进程控制块PCB中。

上下文切换的流程如下


引起线程上下文切换的原因


进程调度算法


线程进程通信的方式


进程通信

管道传输数据是单向的,想互相通信得建两个管道才行。

管道这种通信方式效率低,不适合进程间频繁地交换数据。但是简单,很容易知道管道里的数据被另一个进程读取了。


用于异常情况下的工作模式,唯一的异步通信机制。


消息这种模型让两个进程之间的通信就像发邮件一样,来一封,回一封。
但是存在通信不及时、附件大小有限制的问题。
在内核中每个消息体都有一个最大长度的限制。
消息队列通信过程中,存在用户态和内核态之间的数据拷贝开销


信号量表示资源的数量,控制信号量的方式有两种原子操作。
P(-1) V(+1)


共享内存的机制,就是拿出一块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写入的东西,另一个进程马上就能看到了,不需要拷贝来拷贝去。



线程通信

volatile,等待、通知机制(Wait/Notify),join方式,threadLocal


进程如何内配内存

堆和文件映射段的内存是动态分配的,比如使用C标准库的malloc()或者mmap(),就可以分别在堆和文件映射段动态分配内存。


Linux最先启动的三个进程

0 1 2号线程(PID)
idle init kthread


内存管理

操作系统的内存管理主要是负责分配与回收,地址转换将逻辑地址转换成相应的物理地址也是操作系统内存管理做的事。


内存管理机制

连续分配内存方式

离散内存分配方式


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


虚拟存储系统

虚拟存储器
指具有请求调入功能和置换功能,能够利用外存储器的空余空间从逻辑上对内存容量进行扩充的一种存储器系统。从用户角度看,该系统所具有的内存容量可能比实际内存容量大的多,但这并非真实地增加了物理内存。

请求分页存储管理方式
请求分页存储管理方式是实现虚拟存储器的方式之一,在基本分页存储管理系统基础之上,增加了请求调页功能和页面置换功能而实现的。进程在内外存之间进行换入换出的基本单位都是页面。

页面置换算法


虚拟地址到物理地址的转换


标签:知识点,操作系统,队列,WJ,线程,内存,进程,页表
来源: https://blog.csdn.net/qq_43178138/article/details/118660311