操作系统学习记录
文章平均质量分 85
该专栏参考小林coding,整理笔记用,侵权删!!!
每天进步一......
这个作者很懒,什么都没留下…
展开
-
操作系统--零拷贝
什么是 DMA 技术?简单理解就是,。可以看到,。但是 CPU 在这个过程中也是必不可少的,因为传输什么数据,从哪里传输到哪里,都需要 CPU 来告诉 DMA 控制器。早期 DMA 只存在在主板上,如今由于 I/O 设备越来越多,数据传输的需求也不尽相同,所以每个 I/O 设备里面都有自己的 DMA 控制器。原创 2024-02-26 19:54:03 · 985 阅读 · 0 评论 -
操作系统--设备管理
我们的电脑设备可以接非常多的,比如键盘、鼠标、显示器、网卡、硬盘、打印机、音响等等,每个设备的用法和功能都不同。为了屏蔽设备之间的差异,每个设备都有一个叫的组件,比如硬盘有硬盘控制器、显示器有视频控制器等。因为这些控制器都很清楚的知道对应设备的用法和功能,所以 CPU 是通过设备控制器来和设备打交道的。,这可比 CPU 直接控制输入输出设备,要方便和标准很多。实际上,控制器是有三类寄存器:数据寄存器命令寄存器状态寄存器可分为两大类 :块设备字符设备。原创 2024-02-26 17:46:30 · 600 阅读 · 0 评论 -
操作系统--文件系统
隐式链表的存放方式的。原创 2024-02-26 16:59:46 · 911 阅读 · 0 评论 -
操作系统--调度算法
Scan。原创 2024-02-23 16:59:55 · 1070 阅读 · 0 评论 -
操作系统--悲观锁、乐观锁
开发过程中,最常见的就是互斥锁的了,互斥锁加锁失败时,会用「线程切换」来应对,当加锁失败的线程再次加锁成功后的这一过程,会有两次线程上下文切换的成本,性能损耗比较大。如果我们明确知道被锁住的代码的执行时间很短,那我们应该选择开销比较小的自旋锁,因为自旋锁加锁失败时,并不会主动产生线程切换,而是一直忙等待,直到获取到锁,那么如果被锁住的代码执行时间很短,那这个忙等待的时间相对应也很短。如果能区分读操作和写操作的场景,那读写锁就更合适了,它允许多个读线程可以同时持有读锁,提高了读的并发性。原创 2024-02-23 15:48:33 · 853 阅读 · 0 评论 -
操作系统--死锁
当两个线程为了保护两个不同的共享资源而使用了两个互斥锁,那么这两个互斥锁应用不当的时候,可能会造成,在没有外力的作用下,这些线程会一直相互等待,就没办法继续运行,这种情况就是发生了。死锁只有以下四个条件才会发生:互斥条件持有并等待条件不可剥夺条件环路等待条件。原创 2024-02-23 15:12:21 · 901 阅读 · 0 评论 -
操作系统--多线程的互斥、同步
在的过程中,进程/线程之间存在协作的关系,例如有互斥、同步的关系。原创 2024-02-23 14:56:07 · 1133 阅读 · 0 评论 -
操作系统--Linux内核进程间的通信方式
由于每个进程的用户空间都是独立的,不能相互访问,这时就需要借助内核空间来实现进程间通信,原因很简单,每个进程都是共享一个内核空间。Linux 内核提供了不少进程间通信的方式,其中最简单的方式就是管道,管道分为「匿名管道」和「命名管道」。匿名管道顾名思义,它没有名字标识,匿名管道是特殊文件只存在于内存,没有存在于文件系统中,shell 命令中的「」竖线就是匿名管道,通信的数据是无格式的流并且大小受限,通信的方式是单向的,数据只能在一个方向上流动,如果要双向通信,需要创建两个管道,再来。原创 2024-02-01 20:36:05 · 1061 阅读 · 0 评论 -
操作系统--进程、线程基础知识
我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着CPU 会执行程序中的每一条指令,那么这个。假如有一个会读取硬盘文件数据的程序被执行了,那么当运行到读取文件的指令时,就会去从硬盘读取数据,但是硬盘的读写速度是非常慢的,那么在这个时候,如果 CPU 傻傻的等硬盘返回数据的话,那 CPU 的利用率是非常低的。所以,当进程要从硬盘读取数据时,CPU 不需要阻塞等待数据的返回,而是去执行另外的进程。原创 2024-01-31 09:01:04 · 1150 阅读 · 0 评论 -
操作系统--Linux虚拟内存管理
虚拟地址。原创 2024-01-25 17:11:06 · 2270 阅读 · 0 评论 -
操作系统--内存管理
现在的问题是解决思路:让操作系统为每个进程分配独立的一套「虚拟地址」,然后操作系统会提供一种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。):程序所使用的内存地址):实际存在硬件里面的空间地址(MMU):包含虚拟地址和物理地址的映射关系,在CPU芯片中。原创 2024-01-15 20:50:18 · 830 阅读 · 0 评论 -
操作系统-- Linux vs Windows
现代操作系统,内核一般会提供 4 个基本能力:管理进程管理内存管理硬件设备提供系统调用Linux 内核设计的理念主要有这几个点:MultiTaskSMPELFMonolithic KernelMultiTaskSMP小林 coding。原创 2024-01-10 21:05:02 · 468 阅读 · 0 评论 -
操作系统--软中断
在计算机中,中断是系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的进程,然后调用内核中的中断处理程序来响应请求。中断处理程序要短且快这样才能减少对正常进程运行调度地影响。原创 2024-01-10 20:44:53 · 362 阅读 · 0 评论 -
操作系统--CPU高级
使得变量在 Cache Line 里是对齐的为了防止前面提到的 Cache 伪共享问题,我们可以使用上面介绍的宏定义,将 b 的地址设置为 Cache Line 对齐地址,这样 a 和 b 变量就不会在同一个 Cache Line 中了。所以,避免 Cache 伪共享实际上是用空间换时间的思想,浪费一部分 Cache 空间,从而换来性能的提升。原创 2024-01-10 20:22:52 · 727 阅读 · 0 评论 -
操作系统--CPU Cache
CPU Cache 的数据是从内存中读取过来的,它是以一小块一小块读取数据的。在 CPU Cache 中的,这样一小块一小块的数据,称为。在内存中,这一块的数据我们称为Block。它们的大小是一次载入数据的大小,服从。原创 2024-01-10 15:33:05 · 1058 阅读 · 0 评论 -
操作系统--存储器
速度越快容量都比较小。原创 2024-01-10 11:32:36 · 693 阅读 · 0 评论 -
操作系统--CPU初级
外部:读写头、纸带图灵机内部(读写头内部):存储单元、控制单元、运算单元图灵机主要功能就是读取纸带格子中的内容,然后交给控制单元识别字符是数字还是运算符指令,如果是数字则存入到图灵机状态中,如果是运算符,则通知运算符单元读取状态中的数值进行计算,计算结果最终返回给读写头,读写头把结果写入到纸带的格子中。原创 2024-01-10 10:46:30 · 837 阅读 · 0 评论