![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统
文章平均质量分 88
操作系统
李佟然
好好学习,天天向上
展开
-
Linux操作系统篇:多线程
一个或多个执行流(线程),进程地址空间,文件描述符表,页表,物理内存保存的进程资源等加一起才是进程,线程是在进程内部的执行流资源。线程是操作系统调度的基本单位。进程是资源分配的基本实体(单位)。操作系统以进程为基本单位分配资源,进程在创建时就会携带一个线程,这个线程是是主线程。进程包含线程,进程内有一个或多个线程,一个进程有自己的一个PCB,页表,进程地址空间,文件描述符表,这都是操作系统给其分配的。原创 2024-06-21 23:38:23 · 775 阅读 · 2 评论 -
操作系统内功篇:内存管理之虚拟内存
在这种情况下,要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2000 的位置写入一个新的值,将会擦掉第二个程序存放在相同位置上的所有内容,所以同时运行两个程序是根本行不通的,这两个程序会立刻崩溃。操作系统是如何解决这个问题呢?这里关键的问题是这两个程序都引用了绝对物理地址,而这正是我们最需要避免的。我们可以把进程所使用的地址「隔离」开来,即让操作系统为每个进程分配独立的一套「虚拟地址」,人人都有,大家自己玩自己的地址就行,互不干涉。原创 2024-04-02 21:32:56 · 841 阅读 · 3 评论 -
操作系统内功篇:操作系统结构之Linux内核和Windows内核
计算机是由各种硬件设备组成的,例如:内存,CPU等,如果上层应用层的每个软件都要和每个硬件设备打交道的话太累了,所以就有了内核,内核负责连接硬件设备和软件,负责他们的通信。原创 2024-03-25 20:49:14 · 653 阅读 · 4 评论 -
操作系统内功篇:硬件结构之软中断
中断请求的处理程序应该要短且快,这样才能减少对正常进程运行调度地影响,而且中断处理程序可能会暂时关闭中断,这时如果中断处理程序执行时间过长,可能在还未执行完中断处理程序前,会丢失当前其他设备的中断请求。●那 Linux 系统为了解决中断处理程序执行过长和中断丢失的问题,将中断过程分成了两个阶段,分别是「上半部和下半部分」。●上半部用来快速处理中断,一般会暂时关闭中断请求,主要负责处理跟硬件紧密相关或者时间敏感的事情。●下半部用来延迟处理上半部未完成的工作,一般以「内核线程」的方式运行。原创 2024-03-24 22:29:55 · 747 阅读 · 1 评论 -
操作系统内功篇:硬件结构之CPU是如何执行任务的?
当代CPU一般是多核心的,每个核心都有自己的一个L1和L2Cache,L3Cache是一个CPU所有核心共享的,一个CPU只有一个。L1Cache分为数据缓存和指令缓存。CPU有三层高速缓存的目的就是将Cache作为CPU和内存间的缓存层,减少CPU访问内存的频率从而提高效率。CPU从内存读取数据也是先读取到Cache,一次读取是读取一个Cache Line(缓存行)。所以说缓存行是CPU读取数据的最小单位。Cache Line的大小可以在Linux系统中查看和修改,默认是64byte。原创 2024-03-23 19:42:57 · 932 阅读 · 1 评论 -
操作系统内功篇:硬件结构之CPU缓存一致性
是由很多个Cache Line组成的,CPU Line是CPU从内存读取的基本单位,CPU Line是由多个标志+数据块组成。原创 2024-03-17 20:55:27 · 1070 阅读 · 1 评论 -
操作系统内功篇:硬件结构之如何写出让CPU执行更快的代码?
因为CPU要操作的数据都在CPU Cache中的话,就不用再从内存中读取数据了,这样就提高了效率,访问的数据在CPU Cache中越多,有个专业名词称为缓存命中率高,所以说,缓存命中率越高,自然执行代码就快了。总结:所以说写出CPU跑得更快的代码就是写出缓存命中率高的代码。原创 2024-03-17 19:37:51 · 1013 阅读 · 0 评论 -
操作系统内功篇:硬件结构之存储器
内存,硬盘(机械硬盘,固态硬盘),CPU中的寄存器,CPU的L1/L2/L3Cache都属于存储设备。除了硬盘以外,其他的存储设备都会在断电后丢失数据,硬盘则不会,硬盘还是一个I/O设备。原创 2024-03-14 00:04:56 · 868 阅读 · 1 评论 -
操作系统内功篇:硬件结构之CPU是如何运行的?
本文分5个小结,分别是图灵机工作方式,冯诺依曼结构,总线线路位宽和CPU位宽,程序执行的基本过程, a=1+2的具体执行过程。原创 2024-03-13 17:02:32 · 1110 阅读 · 2 评论 -
操作系统内功篇:使用说明
本专栏是我阅览大佬小林coding写的电子书《图解系统》的一些总结并参杂一些我个人学习的补充,博客大纲是用的大佬的纲要。暂时打算更新这么多,在以后的学习的过程中再慢慢更新.........原创 2024-03-13 16:35:54 · 331 阅读 · 0 评论 -
Linux操作系统篇:进程间通信
进程通信是什么?两个或多个进程实现数据层的交互,因为进程独立的原因,进程的通信成本较高。为什么要进程间通信?顾名思义,进程间通信就是在不同进程之间传播或交换信息。怎么实现进程间通信?a) 通信的本质:就是让不同的进程看到同一份”资源“b) "资源"是特定形式的内存空间c) "资源"由OS提供,为什么不是其中一个进程提供呢?如果是其中一个进程提供的话,那到底是谁提供呢,而且进程具有独立性互不干涉。原创 2024-03-10 23:04:37 · 1091 阅读 · 4 评论 -
Linux操作系统篇: 文件系统和软硬连接
文件=文件内容+文件属性磁盘上存储文件=存文件的内容(数据块)+存文件的属性(inode)Linux的文件在磁盘中存储是将属性和内容分开存储的。文件内容的存储是给每个文件分配一块空间,此空间就叫数据块。文件属性是存储到inode中,inode也是一个数据块,大小128字节,每个磁盘上的文件都有自己的一块数据块,但是inode不是每个文件都有的,inode是公共的,每个文件的属性都存在inode中。原创 2024-03-10 00:03:26 · 1040 阅读 · 3 评论 -
Linux操作系统篇:基础IO
1. 文件=内容+属性,内容与属性都是数据,都要在磁盘中保存。2. 文件分为打开的文件和没打开的文件。3. 进程在访问一个文件的时候,都是要先打开这个文件。打开文件之前,文件在磁盘,打开文件之后,文件在内存。4. 一个进程可以打开多个文件,多个进程可以打开多个文件,被打开的文件要加载都内存,打开文件实际是操作系统去执行,操作系统也要将打开的文件管理起来,如何管理呢?先描述,再组织一个文件被加载到内存就是一个进程。进程就要有自己的PCB,操作系统用双链表将PCB管理起来,这在之前就讲过了。原创 2024-03-06 23:36:01 · 1114 阅读 · 5 评论 -
Linux篇小知识点:进程被创建时,操作系统到底为它做了什么工作?
以32位宽虚拟地址为例子,32位宽虚拟地址就是32个比特位,32个比特位就是4字节,32个比特位被分为10+10+12三块,三块页表也不是一整块,假设说页表是一整块,虚拟地址4字节,物理地址4字节,权限2字节,一个地址映射就要10字节,32位的进程地址空间4G,地址从全零到全一,共有2^32个地址,2^32个虚拟地址就要 10*2^32个字节,这才是一个进程的页表,进程的独立性,每个进程一个页表,放进内存是放不开的。而如果页面过小,会导致外部碎片增加,4KB 的页面大小在内存管理的折中方面表现较好。原创 2024-03-03 09:13:06 · 917 阅读 · 6 评论 -
Linux操作系统篇: 进程控制
使用_exit函数退出进程的方法我们并不经常使用,_exit函数也可以在代码中的任何地方退出进程,但是_exit函数会直接终止进程,并不会在退出进程前会做刷新,这和实现有关系,exit是库函数,_exit是系统调用,exit的实现是封装的_exit系统调用但包含了会刷新一下缓冲区,而_exit函数是系统调用,并没有缓冲区的概念,自然就不会刷新。使用exit函数退出进程前,exit函数会执行用户定义的清理函数、冲刷缓冲,关闭流等操作,然后再终止进程,而_exit函数会直接终止进程,不会做任何收尾工作。原创 2024-03-02 18:37:09 · 1211 阅读 · 2 评论 -
Linux操作系统篇:进程
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系为什么计算机要采用冯诺依曼体系呢?在计算机出现之前有很多人都提出过计算机体系结构,但最终选择冯诺依曼是因为用比较少的钱就可以做出效率不错的计算机截至目前,我们所认识的计算机,都是由一个个的硬件组件组成输入单元:包括键盘鼠标,扫描仪写板等中央处理器(CPU):含有运算器和控制器等输出单元:显示器,打印机等这里的存储器指的是内存不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设。原创 2024-02-22 22:11:14 · 2094 阅读 · 3 评论 -
Linux篇:指令
bin目录:这个目录包含了一些基本的系统命令和工具,这些命令对于系统的正常运行是必需的。总的来说,/usr/bin目录和/bin目录都存放了常用的可执行文件,但/bin目录中的命令更偏向于系统级别,是系统运行所必需的基本命令,而/usr/bin目录中的命令则更加面向用户,提供了更多的实用工具和应用程序。详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,原创 2024-02-20 21:43:50 · 1460 阅读 · 0 评论 -
Linux篇:Shell命令以及运行原理 和 权限
目录的可执行权限是表示你可否在目录下执行命令。原创 2024-02-21 10:51:17 · 1459 阅读 · 0 评论 -
Linux篇:开发工具yum/vim/gcc/g++/Makefile/gdb
如果我们修改了原文件,历史上曾经还有可执行,那么原文件的最近修改时间,一定要比可执行程序要新!只需要比较,可执行程序的最近修改时间和源文件的最近修改时间:.exe新于.c源文件,不需要重新编译,.exe老于.c源文件,需要重新编译。定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作。」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n。」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直。原创 2024-02-21 16:24:28 · 1520 阅读 · 2 评论