操作系统
天健园扛把子
兴趣遍地都是,专注和持之以恒才是真正稀缺的。
展开
-
Linux进程调度
Linux中的进程分为实时进程和普通进程 任何实时进程的优先级都要高于普通进程 进程可以分为IO消耗型和处理器消耗型 IO消耗型大部分时间都用来提交IO请求和等待IO请求 处理器耗费型进程把时间都大多用在执行代码上 在每个进程的进程控制块中都有一个域policy,用来指明该进程为何种进程,应该使用何种调度策略 若PCB中policy为SCHED_NORMAL,则说明该进程为普通进程...原创 2019-04-24 20:35:46 · 194 阅读 · 0 评论 -
Linux系统编程——守护进程
守护进程 Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp服务器;nfs服务器等。 创建守护进程,最关键的一步是调用setsid函数创建...原创 2019-04-24 20:39:40 · 278 阅读 · 0 评论 -
深入理解CPU上下文切换
CPU上下文切换 CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。而程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。它们都是 CPU 在运行任何任 务前,必须的依赖环境,因此也被叫做 CPU 上下文**。** CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程...原创 2019-05-21 22:08:28 · 597 阅读 · 0 评论 -
malloc实现过程
前言 最近重温深入理解计算机系统,看到了malloc的实现,malloc主要涉及到两个系统调用brk和mmap.废话不多说直接上源码,一切尽在源码之中。 brk系统调用的入口函数为sys_brk() sys_brk系统调用源码 SYSCALL_DEFINE1(brk, unsigned long, brk) { unsigned long retval; unsigned long...原创 2019-07-01 14:39:10 · 625 阅读 · 0 评论 -
锁的实现机制
在多线程编程中,为了保证数据操作的一致性,操作系统引入了锁机制,用于保证临界区代码的安全。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。 所谓的锁,说白了就是内存中的一个整型数,拥有两种状态:空闲状态和上锁状态。加锁时,判断锁是否空闲,如果空闲,修改为上锁状态,返回成功;如果已经上锁,则返回失败。解锁时,则把锁状态修改为空...原创 2019-07-03 17:21:23 · 777 阅读 · 1 评论