操作系统
文章平均质量分 90
Owl丶
这个作者很懒,什么都没留下…
展开
-
操作系统杂记
阻塞 和 挂起阻塞是进程的一种状态,而挂起是行为。线程的五个状态:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。阻塞进程的阻塞是指使一个进程让出处理器,去等待一个事件,如等待资源、等待I/O完成、等待一个事件发等,通常进程自己调用阻塞原语阻塞自己,所以,是进程自主行为,是一个同步事件。当一个等待事件结束会产生一个中断,从而,激活操作系统,在系统的控制之下将被阻塞的进程唤醒,如I/O操作结束、某个资源可用或期待事件出现。进程的阻塞和唤醒显然是由进程切换来完成。挂起当出现了引起挂起的事件时系原创 2021-05-23 12:11:52 · 264 阅读 · 0 评论 -
malloc原理分析:ptmalloc2
文章目录多线程:主分配区和非主分配区结构chunkbinfast binsunsorted binsmall binslarge binsmmaped chunktop chunkLast remainder流程分配初始化malloc流程内存回收流程如何避免内存暴增?glibc中malloc采用的是ptmalloc2内存池管理方式,使用边界标记法将内存划分成很多块,从而对内存的分配与回收进行管理。多线程:主分配区和非主分配区为了支持多线程,ptmalloc使用两类分配区:主分配区main_area和原创 2021-03-25 23:47:39 · 850 阅读 · 0 评论 -
《Linux内核设计与实现》读书笔记
第一章 Linux内核简介1.3操作系统和内核简介内核有时候被称作是管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。对于提供保护机制的现代系统来说,内核独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。相对的,应用程序在用户空间执行。它们只能看到允许它们使用的部分系统资源,并且只使原创 2020-12-01 20:24:42 · 5664 阅读 · 1 评论 -
CSAPP小记
补码的非一个补码x的加法逆元即为补码的非。加法逆元+x =0,通常为 补码 x 真值 的相反数的补码,记为 -x(最小数除外,为自身)。用处:一个负数 的 补码的非为 该负数相反数的补码,且正数补码等于原码,可以快速算出真值,真值取反即为最初的负数。所以可以根据补码的非快速算出一个负数补码的真值。方法:例子:0xfffffffa的真值为多少?找到0xfffffffa最右边的1,将其左边所有位取反得到:0x00000006,该补码非真值为6,所以0xfffffffa真值为-6....原创 2020-05-18 16:50:30 · 319 阅读 · 0 评论 -
进程地址空间、可执行文件 分析
进程地址空间地址空间顶部保留给内核(操作系统常驻内存的部分)。地址空间的这个部分包含内核在代表进程执行指令时(比如当应用程序执行系统调用时)使用的代码、数据和栈。可执行目标文件ELF头描述文件的总体格式,还包含程序的入口点,也就是当程序运行时要执行的第一条指令的地址。只读代码段:.init节定义了一个小函数,叫做_init,程序的初始化代码会调用它。.text : 存放已编译程序的机器代码。.rodata:常量区,存放只读数据,比如字符串常量、printf语句中的格式串和开关语句的跳转表。原创 2020-07-23 23:21:15 · 265 阅读 · 0 评论 -
static变量、全局变量及其存储位置、extern关键字
static变量:在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。static全局变量:相当于全局变量,但只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它,而extern全局变量可以。static局部变量:只在定义的函数体内有效,第一次定义时初始化,后续再次进入子函数时不进行初始化,保持上次的值不变。void f(){ static int count=0; count++; cout<<count<&l原创 2020-07-23 22:51:24 · 7193 阅读 · 0 评论