WangFuJie Blog

路在脚下,心向远方

自制操作系统 - 互斥、信号量与锁

互斥、信号量与锁

在遇到多进程共享资源时,会遇到资源争抢问题,前边我们通过关中断解决。这里通过通过互斥量和锁来解决临界区的问题,锁分为互斥锁、自旋锁、读写锁三种,我们开发的单处理系统,暂不实现自旋锁。

自制操作系统 - 任务状态

任务状态

任务处理就绪态和运行态之外,还有阻塞态和休眠态。本文中将实现任务进入阻塞态和休眠态的实现,详细介绍进入阻塞和解除阻塞已经休眠和唤醒。进入阻塞和休眠的任务分别使用双向链表进行管理。

自制操作系统 - 系统调用

系统调用

系统调用是用户进程与内核沟通的方式。可以将 CPU 从用户态转向内核态;系统调用通过中断门来实现。本文将实现系统调用的框架,并实现一个yield系统调用。yield的作用是进程主动交出执行权,去调度执行其他进程。

自制操作系统 - 创建内核线程

创建内核线程

在内核进行相关组件初始化后,就会进入内核线程,执行内核的相关任务。本文将创建内核线程,通过时间片和任务优先级进行线程的切换和调度

自制操作系统 - 内核内存映射

内核内存映射

内核使用前边8M的内存,本文将对内核使用的内存进行映射。在已经启用内存分页后通过页目录最后一项指向自身来修改页目录和页表。并通过位图来管理内核的1M~8M的内存位置。