
操作系统
文章平均质量分 69
Quan_2022
把每一招、每一式融会贯通,然后尽量忘得一干二净
展开
-
多线程之间共享的资源有哪些
教材的说法:进程是资源分配的基本单位;线程是系统调度的基本单位。平时我们写的程序都是作为线程运行的;进程可以看做是包括一系列线程和资源的统称;一个进程至少包括一个线程(主线程,进入main函数时产生的);在其中可以创建其它线程,也可以不创建。同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?共享的资源有:a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)b. 全局变量 它是与具体某一函数无原创 2021-10-02 16:23:32 · 1836 阅读 · 0 评论 -
malloc底层原理
参考博文:https://www.cnblogs.com/zpcoding/p/10808969.html1、brk是将数据段(.data)的最高地址指针_edata往高地址推;2、mmap是在进程的虚拟地址空间中(堆和栈中间,称为文件映射区域的地方)找一块空闲的虚拟内存。这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存之间的映射关系。在标准C库中,提供了malloc/free函数分配释放内存,原创 2021-09-04 14:49:02 · 204 阅读 · 0 评论 -
高频算法面试题,LRU缓存机制,详解
一、LRU算法简介LRU即 Least Latest Used最近最少使用的, 该算法是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。该算法的思路是,发生缺页中断时,选择未使用时间最长的页面置换出去。从程序运行的原理来看,最近最少使用算法是比较接近理想的一种页面置换算法,这种算法既充分利用了内存中页面调用的历史信息,又正确反映了程序的局部问题。二、LRU算法描述LRU 算法实际上是让你设计数据结构:首先要接收一个 capacity 参数作为缓存的最大容量,然后实现两个 API,一个是原创 2021-08-29 00:01:31 · 717 阅读 · 0 评论 -
线程上下文切换和进程上下文切换的区别
进程切换分两步1.切换页目录以使用新的地址空间 2.切换内核栈和硬件上下文。 对于linux来说,线程和进程的最大区别就在于地址空间。对于线程切换,第1步是不需要做的,第2是进程和线程切换都要做的。所以明显是进程切换代价大线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制原创 2021-08-16 16:22:27 · 761 阅读 · 0 评论 -
操作系统——文件系统
操作系统总结,系列4——文件系统操作系统学习总结系列,主要是对操作系统概念和重点主干知识的总结与归纳。参考:《现代操作系统》第4版其他系列链接:操作系统总结,系列1——进程与线程操作系统总结,系列2——内存管理操作系统总结,系列3——死锁操作系统总结,系列4——文件系统文章目录操作系统总结,系列4——文件系统一、文件1、概念2、文件命名3、文件结构字节结构记录序列树4、文件类型5、文件访问**顺序访问**:随机访问文件6、文件属性概念举例7、文件操作二、目录1、概念2、一级目录系统3、层级目录原创 2021-05-12 21:08:34 · 923 阅读 · 0 评论 -
操作系统——死锁
操作系统总结,系列3——死锁操作系统学习总结系列,主要是对操作系统概念和重点主干知识的总结与归纳。参考:《现代操作系统》第4版其他系列链接:操作系统总结,系列1——进程与线程操作系统总结,系列2——内存管理操作系统总结,系列3——死锁操作系统总结,系列4——文件系统文章目录操作系统总结,系列3——死锁一、资源1、可抢占资源2、不可抢占资源二、定义三、必要条件1、互斥2、可占和等待3、不可抢占4、环路等待四、处理方法1、鸵鸟算法2、死锁检测与死锁恢复每种类型一个资源的死锁检测每种类型多个资源的死原创 2021-05-12 21:01:30 · 591 阅读 · 0 评论 -
操作系统——内存管理
操作系统总结,系列2——内存管理操作系统学习总结系列,主要是对操作系统概念和重点主干知识的总结与归纳。参考:《现代操作系统》第4版其他系列链接:操作系统总结,系列1——进程与线程操作系统总结,系列2——内存管理操作系统总结,系列3——死锁操作系统总结,系列4——文件系统文章目录操作系统总结,系列2——内存管理一、虚拟内存1、地址空间:2、虚拟内存的概念3、分页4、页表5、加速分页TLB加速分页6、针对大内存的页表二、页面置换算法1、最优页面置换算法(OPT)2、最近最久未使用页面置换算法(LR原创 2021-05-12 17:18:14 · 797 阅读 · 0 评论 -
操作系统——进程与线程
操作系统总结,系列1—— 进程与线程操作系统学习总结系列,主要是对操作系统概念和重点主干知识的总结与归纳。参考:《现代操作系统》第4版其他系列链接:操作系统总结,系列2——虚拟内存操作系统总结,系列3——死锁操作系统总结,系列4——文件管理一、概念1、进程是资源分配的基本单位。2、线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。二、进程的实现1、进程表 为了实现进程模型,操作系统维护着一张表格(一个结构数组),即进程表。每个进程占有一个进程表项。(有些著作称原创 2021-05-11 22:38:57 · 367 阅读 · 0 评论 -
函数的调用过程,从汇编和内存的角度分析
函数的调用过程 —— 从反汇编和内存的角度分析程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。一、汇编语言基础知识回顾1、X86汇编语言的差异X86 下常用的汇编有 AT&T 与 Intel 两种,二者在语法上有一定的差原创 2021-04-22 22:11:37 · 1676 阅读 · 0 评论 -
通过GCC编译器编译c程序的四个阶段,动态链接与静态链接的区别
C编译器编译hello.c的四个阶段Stage 1. 预处理Stage 2. 编译Stage 3. 汇编Stage 4. 链接结束语 本文展示一个hello.c源文件在linux系统下被翻译成可执行目标文件的四个阶段。本文中的操作在 Ubuntu18.04 LTS,64-bit环境下进行,采用的编译器为GCC 7.5.0。本文参考 CS:APP 3rd Edition测试源文件hello.c代码如下所示:#include <stdio.h>int main(){ printf原创 2020-10-03 20:16:20 · 909 阅读 · 0 评论 -
计算机操作系统中处理机和cpu和内核三者的区别?
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/qq_38998213/article/details/86297380转载 2020-12-14 14:24:41 · 3002 阅读 · 0 评论