Operation System
文章平均质量分 88
Zheng__Huang
CTF学习起步中……
常更笔记、共同进步
展开
-
Linux modules-load 启动时加载驱动模块
Linux 内核包含非常多驱动以及其他功能模块,驱动开发时,我们可以通过insmod命令向内核中载入模块、rmmod卸载模块、lsmod列出加载的所有模块。一般情况下,模块会根据硬件接入情况自动载入内核。但某些情况下,我们需要使用modules-load配置将部分驱动(或自己编写的测试驱动)自动载入内核。原创 2022-12-12 00:08:10 · 3940 阅读 · 0 评论 -
CPU段访问控制:特权级(RPL CPL DPL)和代码段一致性
虽然目前操作系统没有应用分段机制,但了解其运行原理仍然具有吸引力XD。本片文章,我们就来理清CPU段访问控制中,代码段一致性的概念。原创 2022-11-05 23:30:08 · 1047 阅读 · 0 评论 -
Linux 进程同步实战入门(共享内存、信号量)
为了共同完成某项任务,不同进程间需要有一种协作的方式。其中最简单的一种,就是两个进程共享一块物理内存区域。多个进程都可以在其中读写数据,这样就完成了数据从一个进程传送到另一个进程的功能。但单纯使用共享内存还不够,当多个进程并发执行,一同访问共享数据区域,就可能产生数据错误。(关于并发和竞争条件,本文不详细展开,读者可以查阅其他资料)**所以,我们还需要一种同步这些进程行为的方式。**本文我们将采用信号量实现进程同步。生产者-消费者问题 让我们来考虑这种场景:有n台电脑,m台打印机。n台电脑分别.原创 2022-05-27 22:02:57 · 1082 阅读 · 0 评论 -
读者-写者问题精析——分析与优化
最近遇到了进程并发与互斥相关的问题。其中一个经典的问题就是读者-写者问题。本文对读者-写者问题的经典模式——读者优先,与两个拓展模式——写者优先、读写公平进行了描述和分析。笔者通过总结归纳,对互斥锁的理念(Idea)有了进一步的了解,并基于此提出了一些可能的方法。(本文描述中,锁和信号量两个概念混杂使用,指代同一对象)问题描述读者-写者(Reader-Writer)问题,描述了多个读者与写者对同一共享资源(如内存,文件等)并发访问的情境。其主要特点为:读者间不互斥:读取操作不会改变资源内容.原创 2022-05-24 22:29:30 · 2332 阅读 · 3 评论 -
Linux系统调用 - 进程管理初探(中)
本文对Linux系统调用的机制进行了大致分析,并以此为基础对Linux进程管理(多进程调用、进程同步等)进行初步探索。在研究进程fork()函数的过程中,笔者产生了很多问题,也通过查阅资料、动手实验等方式对这些问题有了一定的研究和理解。本文将按照笔者对问题研究的历程入手,对Linux进程管理的部分基本过程和背后机理进行阐述。在本文中,你将看到:系统调用(system call)的流程POSIX基本进程管理函数——fork() / vfork() / clone() / wait() / wai.原创 2022-05-08 19:56:06 · 1227 阅读 · 0 评论 -
Linux系统调用 - 进程管理初探(上)
本文对Linux**系统调用的机制**进行了大致分析,并以此为基础对Linux进程管理(多进程调用、进程同步等)进行初步探索。在研究进程`fork()`函数的过程中,笔者产生了很多问题,也通过查阅资料、动手实验等方式对这些问题有了一定的研究和理解。本文将按照笔者对问题研究的历程入手,对Linux进程管理的部分基本过程和背后机理进行阐述。原创 2022-05-07 21:13:41 · 584 阅读 · 0 评论 -
Linux 时间函数 (time() clock() gettimeofday()) 简介与比较
Linux 时间函数 (time() / clock() / gettimeofday()) 简介与比较 本文将对Linux系统时间函数gettimeofday()与标准库函数time() clock()进行简单介绍,并比较差异。Introduction 最近笔者的一个项目需要使用计时功能,同时使用POSIX的多线程函数进行多线程操作。在计时过程中,出现了一些Bug,导致计时结果错误。经过研究找到了问题,也由此发现了上述几个函数之间的差异。Linux系统库 sys/time.h系统库提供了原创 2022-05-07 20:03:04 · 914 阅读 · 0 评论 -
利用位运算 对绝对值函数的分支预测优化(int, double)
利用位运算对整型和浮点型绝对值函数的分支结构进行优化,提升指令执行效率。原创 2022-03-06 14:07:39 · 528 阅读 · 0 评论 -
动手编写操作系统(4):保护模式 - 1
以实操样例的形式,概述了保护模式的特性,详细讲解了保护模式的进入方法、GDT构成等。附有实操代码。原创 2022-02-23 23:10:48 · 983 阅读 · 0 评论 -
动手编写操作系统(3):系统引导过程——BIOS与MBR(下)
通过MBR的实践,学习IO接口、硬盘操作、显存操作等知识。完成一个不带分区表的MBR原创 2022-01-28 23:24:07 · 5661 阅读 · 0 评论 -
cmp test指令 条件转移 FLAGS寄存器 机理探究
从底层逻辑触发,对汇编语言中FLAGS标志寄存器、条件转移指令,以及测试指令进行探究原创 2022-01-20 20:57:14 · 1084 阅读 · 0 评论 -
动手编写操作系统(2):系统引导过程——BIOSMBR(上)
接下来,我们将利用Bochs,对系统引导过程中的BIOS和MBR环节进行探究原创 2022-01-17 17:25:26 · 4457 阅读 · 0 评论 -
动手编写操作系统(1):初识Bochs
下面正式进入实操环节,也就是动手搭建操作系统。看着眼前的Windows/Linux/Mac OS/etc,相信绝大多数同学都会感到兴奋和迷茫:这么大个操作系统,从哪里开始呢?古人有云:“工欲善其事,必先利其器。”我们得以发挥自己聪明才智,进行学习研究创造的前提,是拥有一个好的工具。它能让我们在巨人的肩膀上欣赏与创造。在这里,我想表达对所有在相关领域为后人的方便贡献自己汗水的前辈的衷心的感谢与钦佩。 话不多说,接下来我们正式切入正题:配置调试操作系统所需的环境。C/C++编译器,这里采用gcc/.原创 2022-01-15 21:23:09 · 5896 阅读 · 2 评论 -
操作系统原理——内存的分段、分页和平坦模型:区别与发展
对操作系统原理中,内存的分段、分页和平坦模型进行简单介绍,比较区别,介绍发展与演变。原创 2022-01-14 14:43:29 · 5344 阅读 · 0 评论