操作系统
文章平均质量分 91
总结编程中遇到的有关操作系统的重难点
乱红飞
用技术追赶世界潮流,从人文历史把握人生方向。
展开
-
【OS系列-5】-重要概念理解:分段、分页、写时复制
分段(segmentation)什么是分段?基本思路是:创建进程的时候,首先在进程的虚拟内存空间中,分配出一段地址(0x00000000~0x00000100),然后将这段地址映射到实际的物理地址中(0x01000000 ~ 0x01000100)。也即当程序访问地址0x00000000的时候,实际上访问就是屋里地址0x01000000。为什么分段?为什么分段?如果不太好回答,那我们就反其道行之,看看不分段会有哪些缺点?如果不分段,不采用虚拟地址空间。用户每个进程直接使用实际的屋里内存地址,就会存在原创 2022-01-23 20:14:06 · 592 阅读 · 0 评论 -
【OS系列-4】- 内存详解(分配和回收)
内存详解(分配和回收内存申请malloc()/free()和new/delete异同为什么C++不淘汰malloc?malloc 的系统过程?怎么避免内存碎片化?动态内存管理内存分配三种形式内存分配的方式空间分配与回收所产生的问题分配算法边界标识法回收算法伙伴系统动态管理分配算法垃圾回收机制无用单元回收内存紧缩(避免内存碎片化)《深入理解计算机系统》(P580)从Code Segment到Stack的内存地址均位于用户空间中,其地址空间由低到高。其中:Code Segment(代码段或Tex原创 2022-01-16 17:51:33 · 1826 阅读 · 0 评论 -
【OS系列-2】- 进程详细讲解(代码示例)
进程进程详细讲解(代码示例)进程示例代码创建进程的具体过程?执行 fork()的时候系统做了什么?进程间通信管道消息队列共享内存信号量套接字进程间同步信号量文件锁无锁 CAS校验方式(CRC32校验)示例代码// C#include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <iostream> #include <string> using nam原创 2022-01-16 16:39:24 · 838 阅读 · 0 评论 -
【OS系列-3】-线程详解-通信和同步
线程详解线程间同步互斥锁(mutex)互斥量的死锁:读写锁条件变量(cond)信号量互斥与同步的区别互斥锁、条件变量和信号量的区别多线程和多进程比较多进程多线程死锁线程间同步锁机制:互斥锁、条件变量、信号量、读写锁互斥锁:提供了以排他方式数据结构被并发修改的方法读写锁:写锁优先抢占资源,读锁允许多个线程共同读共享数据,而写锁操作是互斥的条件变量:以原子方式阻塞进程,直到某个特定条件为真为止一般情况下:互斥锁起保护作用,条件变量和互斥锁一起使用互斥锁(mutex)锁机制是同一时刻只允许一个原创 2022-01-16 17:19:58 · 319 阅读 · 0 评论 -
【OS系列-1】- I/O操作进阶版细节
工作几年后,发现几乎每个行业,都存在这个行业的一套知识体系,这些知识体系,从基础理论来看,很多是相通的,甚至是相同的,比如理工类专业,基础理论基本都是数学以及数学的分支。如果你需要入门并且在这个行业发展,有效的方法,就是由浅入深阅读这个行业前任总结的经验——书籍。如果你真的能够用心的把已经存在的知识体系搞清楚,那么从事这个行业肯定没有问题。当然了,这件事情也不是一蹴而就的,需要在学校和工作岗位上不断深入理解。对于IT行业来说,目前应该是知识获取和信息获取最便捷的行业之一。方便的同时,带来了信息繁杂和冗余,原创 2022-01-16 16:31:10 · 378 阅读 · 0 评论