
Linux
进阶的傻胖
这个作者很懒,什么都没留下…
展开
-
信号的理解 - 发送前、发送中、发送后
信号产生的方式:1、键盘 2、程序(进程)异常 3、系统调用 4、软件条件信号产生的方式有很多中,但是最终都是由OS统一发送的信号发送之后不是被立即处理的,而是在合适的时间 —————— 1.信号需要保存 2.合适的时间是什么时间内核中的PCB内存在存储信号的结构,block位图,pending位图,handler函数指针数组。这个结构是通过横向观察三个表之间的联系的。pending位图:表示的是已经收到但是还没有被递达的信号。OS发送信号的本质就是修改目标进程的pending位原创 2022-06-23 09:15:30 · 280 阅读 · 0 评论 -
进程间通信(管道、共享内存基本概念)
进程间通信的概念进程间是需要相互通信的 --- 一个进程需要将自己的数据交互给另一个数据 --- 进程间通信进程是具有独立性的 , 交互数据需要的成本肯定是很高的 --- 一个进程看不到另一个进程的资源两个进程之间需要通信,由于进程的独立性 ---- 需要提供一份公共的资源,这里的资源就是指一段内存,这个资源肯定是不属于进程的 ------- 这是操作系统提供的一份资源 这个资源是公共的,大家都可以看到,所以进程之间就可以通信了 ---- 提供的这份资源不同,文件、队列......原创 2022-06-22 19:46:32 · 309 阅读 · 0 评论 -
文件系统的理解(EXT系列的)
文件如果被打开的话,就是通过进程在管理,那么文件没有被打开的时候,怎么存储在计算机中的呢?首先文件没有被打开的时候肯定是存储在磁盘中的。(一般来说)文件 = 文件内容 + 文件属性对于磁盘的理解,我们可以想象成一块很大的数组空间,磁盘太大所以需要分区进行管理,向电脑中的C盘 、 D盘等。对磁盘的管理,主要是两个部分 : 1、 分区 2、 格式化(写入文件系统)然后每个磁盘分区之后,又分成了一些区域知道了以上文件系统的的理解,我们解释一下问题创建一个文件是干了什么?1、找到一个没...原创 2022-05-26 16:46:28 · 214 阅读 · 1 评论 -
基础IO、理解文件底层操作(文件标识符、重定向、缓冲区)
文件标识符、重定向、缓冲区想要深入理解文件相关操作,就必须从底层操作系统上有一个深入的理解!!!从语言层面来说:C语言会默认打开三个输入输出流 stdin stdout stderr 标准输入-键盘 标准输出-显示器 标准错误-显示器 这两个显示器的区别是什么呢?? 标准输出可以重定向的到文件,标准错误不能重定向到文件 同样的C++会打开 cin , cout , cerr那么这三个标准流指的是什么呢?可以看出三个的文件类型都是FILE*类型的结构,那么这个FILE从本质上又是...原创 2022-05-25 11:39:19 · 255 阅读 · 0 评论 -
50行的简易shell
原创 2022-05-22 20:06:18 · 107 阅读 · 0 评论 -
进程控制(创建、终止、等待、替换)
1、进程创建一般使用fork()创建子进程返回值:子进程的返回值是0父进程返回的是子进程的pid(一个父进程有多个子进程,需要通过子进程的pid找到子进程)-1就是创建失败创建子进程就是为了让子进程和父进程干不一样的事情,或者执行一个全新的程序写时拷贝子进程和父进程是贡献一份代码和数据的,但是当需要改变程序和代码的时候,就会发生写时拷贝。需要改变的时候,会重新拷贝一份数据,在上面修改2、进程终止进程退出的三种场景:1、代码执行完毕,结果正确2、代码执行原创 2022-05-22 19:24:39 · 328 阅读 · 0 评论 -
进程的地址空间
一个进程包含的有代码和数据,以及操作系统所维护的相关数据结构,PCB模块,mm_struct,页表,MMU等可以从下图中深入的理解进程的地址空间首先说明一句话的,每个进程都认为自己是独享内存资源的!!!每个进程都有自己的地址空间,也是虚拟的地址,认为自己是独享内存资源的,也就是内存有多大,它的虚拟空间就有多大,但是实际上的空间是由物理内存也就是真正的内存决定的,其中通过页表和MMU两个共同作用将虚拟地址和物理内存建立映射关系,从而存储数据。为什么要引入地址空间呢?1、通过添加一个原创 2022-05-20 16:32:46 · 1401 阅读 · 0 评论 -
进程状态 僵尸和孤儿
一般来说进程的状态是如下图所示的要想了解进程状态还是需要从某个具体的操作系统出发,详细的了解每个状态从Linux内核来看其中包含这么多的进程状态,R - 状态 就是运行状态,表示可以在cpu上运行,但是不一定正在占用CPU,这是因为进程控制块是在一个运行队列中的,所以有可能在等着CPU来调用S状态 和 D状态是两种不同的等待状态S是表示可中断睡眠或者是浅度睡眠,在我们完成某种任务的时候,任务条件不具备,需要等待,所以是比如向外设中写入的时候,外设正在被调用,需要等待D表.原创 2022-05-09 21:08:52 · 383 阅读 · 0 评论