![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 61
云养猫v2
这个作者很懒,什么都没留下…
展开
-
CPU中的指令周期、CPU周期和时钟周期
https://zhuanlan.zhihu.com/p/908299221,指令周期指令周期:是指计算机从取值到执行执行完毕的时间计算机执行指令的过程可以分为以下三个步骤:Fetch(取指),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。Decode(译码),也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,是 R、I、J 中的哪一种指令,具体要操作哪些寄存器、数据或者内存地址。Ex转载 2021-01-08 14:50:56 · 20888 阅读 · 0 评论 -
ELF(Executable and Linkable Format)文件格式
.text:已编译程序的机器代码。.rodata:只读数据,比如printf语句中的格式串和开关语句的跳转表。.data:已初始化的全局和静态变量。局部变量在运行时被保存在栈中,既不出现在.data节中,也不出现在.bss节中。.bss:未初始化的全局和静态变量,以及所有被初始化为0的全局和静态变量。.symtab:一个符号表,它存放在程序中定义和引用的函数和全局变量的信息。.rel.text:一个.text节中位置的列表,当链接器把这个目标文件和其他文件组合式,需要修改这些位置。.rel..原创 2021-01-08 14:11:35 · 302 阅读 · 0 评论 -
动态库与静态库的区别?优缺点?
https://www.pianshen.com/article/4047888938/区别1,命名方式不同静态库libxxx.a:库名前加”lib“,后缀用”.a“,"xxx"为静态库名/动态库libxxx.so:库名前加"lib",后缀变为".so"。2,链接时间不同静态库的代码时在编译过程中被加载入程序中,动态库的代码时当程序运行到相关函数才调用动态库的相关函数。3,链接方式不同静态库的链接是将整个函数库的所有数据在编译时都整合(复制???)进了目标代码。动态库的链接是程转载 2021-01-08 13:51:33 · 2019 阅读 · 0 评论 -
用户态和内核态的区别
操作系统需要两种CPU状态内核态(Kernel Mode):运行操作系统程序,操作硬件用户态(User Mode):运行用户程序指令划分特权指令:只能由操作系统使用、用户程序不能使用的指令。 举例:启动I/O 内存清零 修改程序状态字 设置时钟 允许/禁止终端 停机非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态)CPU状态之间的转换用户态—>内核态:唯一途径是通过中断、异常、陷入机制(访管指令)内核态—>.原创 2020-08-19 09:42:28 · 249 阅读 · 0 评论 -
Linux IO模型 NIO
https://segmentfault.com/a/1190000003063859对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:等待数据准备 (Waiting for the data to be ready)将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)正式因为这两个阶段,li原创 2020-08-18 14:08:47 · 339 阅读 · 0 评论 -
虚拟内存与物理内存 页面置换算法
逻辑地址结构:前一部分是页号,后一部分是页内偏移量地址长度为32位,0~11位为页内地址(页内偏移量),即每页大小为4k,12-31位为页号,地址空间最多允许有2^20页页表:便于在内存中找到进程的每个页面所对应的物理块,系统为每个进程建立一个页表,记录页面在内存中对应的物理块号,页表一般存放在内存中。作用是实现从页号到物理块号的地址映射。基本地址变换机构:任务是将逻辑地址转换为内存中的物理地址,是借助于页表实现的。缺页中断:在请求分页系统中,每当所要访问的页面不在内存中时,边原创 2020-08-17 20:00:30 · 566 阅读 · 0 评论 -
CPU 进程 调度算法
基本准则:CPU利用率、系统吞吐量、周转时间先来先服务调度算法短作业优先算法优先级调度算法高响应比调度算法响应比 = (等待时间 + 要求服务时间) / 要求服务时间时间片轮转调度算法...原创 2020-08-17 19:14:08 · 213 阅读 · 0 评论 -
进制转换
(二、八、十六进制) → (十进制)二进制 → 十进制例:将二进制的(101011)B转换为十进制的步骤如下:第0位 1 x 2^0 = 1;第1位 1 x 2^1 = 2;第2位 0 x 2^2 = 0;第3位 1 x 2^3 = 8;第4位 0 x 2^4 = 0;第5位 1 x 2^5 = 32;读数,把结果值相加,1+2+0+8+0+32=43...转载 2020-04-24 10:01:41 · 1708 阅读 · 0 评论 -
线程间通信
锁机制:包括互斥锁、条件变量、读写锁互斥锁提供了以排他方式防止数据结构被并发修改的方法。读写锁允许多个线程同时读共享数据,而对写操作是互斥的。条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。信号量机制(Semaphore):包括无名线程信号量和命名线程信号量信号机制(Signal):类似进程间...原创 2020-04-03 10:05:13 · 77 阅读 · 0 评论 -
操作系统 死锁
死锁产生的条件互斥条件。即一个资源每次只能被一个进程使用。不可抢占条件。进程已获得的资源,在末使用完之前,不能强行剥夺。占用且等待条件。一个进程因请求资源而阻塞时,对已获得的资源保持不放。循环等待条件。若干进程之间形成一种头尾相接的循环等待资源关系。破坏死锁的四个条件中的一个或几个。互斥:它是设备的固有属性所决定的,不仅不能改变,还应该加以保证...原创 2020-04-03 10:18:08 · 96 阅读 · 0 评论 -
linux使用的进程间通信方式
管道( pipe )管道的实质是一个内核缓冲区,进程以先进先出的方式从缓冲区存取数据,管道一端的进程顺序的将数据写入缓冲区,另一端的进程则顺序的读出数据。普通管道PIPE, 通常有两种限制,一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用.流管道s_pipe: 去除了第一种限制,为半双工,可以双向传输; 只能在父子或者兄弟进程间使用.命名管道:name_pipe, 去除了第二种限...原创 2020-04-03 09:52:27 · 118 阅读 · 0 评论 -
进程与线程的区别
线程是独立调度的基本单位,进程时资源拥有的基本单位。进程是程序的一次执行过程,线程是进程内部的一个执行序列。进程拥有的资源多,线程拥有的资源少。进程间切换代价大,线程间切换代价小。进程间的地址空间互相独立,同一进程的各线程间共享进程的资源。...原创 2020-04-02 18:42:45 · 71 阅读 · 0 评论 -
LRU算法
利用LinkedHashMap重写 removeEldestEntry()方法/** * An LRU cache, based on <code>LinkedHashMap</code>. * * <p> * This cache has a fixed maximum number of elements (<code>cacheSiz...原创 2020-03-18 09:50:03 · 117 阅读 · 0 评论 -
Linux copy-on-write
一般我们运行程序都是Fork一些进程后马上执行exec()加载程序,而fork的实际用的是父进程的堆栈空间,Linux通过Copy On Write技术极大地减少了fork的开销。也就是说子进程共享父进程的堆栈空间。Copy On Write的含义是只有真正的时候才把数据写到子进程的数据,fork只会把页表复制都子进程,这样父子进程都指向同一个物理内存页,只有再写子进程的时候才会把内存页的内容...原创 2019-03-12 13:35:15 · 132 阅读 · 0 评论 -
I/O (未理解、)
IO 多路复用是5种I/O模型中的第3种,对各种模型讲个故事,描述下区别:故事情节为:老李去买火车票,三天后买到一张退票。参演人员(老李,黄牛,售票员,快递员),往返车站耗费1小时。1.阻塞I/O模型老李去火车站买票,排队三天买到一张退票。耗费:在车站吃喝拉撒睡 3天,其他事一件没干。2.非阻塞I/O模型老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。...转载 2019-03-12 09:04:17 · 81 阅读 · 0 评论 -
死锁
产生死锁的原因主要是:1. 因为系统资源的不足2. 进程运行推进的顺序不合适3. 资源分配不当等如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:1. 互斥条件:一个资源每次只能被一个进程使用2. 请求与保持条件:一个进程因请求资源而...原创 2019-03-01 09:34:34 · 103 阅读 · 0 评论 -
线程间通信方式
1. 锁机制:包括互斥锁、条件变量、读写锁互斥锁提供了以排他方式防止数据结构被并发修改的方法。 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。 条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。2. 信号量机制(Semaphore):包括无名线程信号量和命名线程信号量3. 信号机制(Signal):...原创 2019-02-19 20:49:59 · 616 阅读 · 0 评论 -
context switch 上下文切换(进程切换)
为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行。这种行为被称为进程切换。因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。步骤:保存当前在CPU上运行的进程上下文(包括程序计数器和寄存器)更新PCB(进程控制块)信息将进程的PCB移入相应的队列(如阻塞队列)选择另一个进程执行,更新其PCB信息更新内存管理...原创 2019-02-19 20:19:30 · 568 阅读 · 0 评论