[书]操作系统真象还原 -- 第11、12章 用户进程及调度、系统调用、内存管理
====== 第 12 章 系统调用、内存管理 ======
GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_12
系统调用:getpid, write(printf), malloc/free
完善了内存管理:之前实现的是以4KB页为单位的内存申请,在此基础上,实现了任意内存大小的申请、释放,并实现了用户接口malloc() 和free()
运行截图:
在内核线程的main()函数中,创建了2个内核线程、2个用户进程,
1) 2个内核线程,都调用malloc申请了254、255、256字节的内存。内核线程是共享内核的1GB内存空间(虚拟地址必须唯一),所以运行截图中可以看到:这2个内核线程申请到的内存基址,总体是连续累加的,以0x100(即256Bytes)为单位。
2) 2个用户进程,都调用malloc申请了254、255、256字节的内存。用户进程都有自己独立的4GB虚拟内存空间,所以运行截图中可以看到:这2个用户进程申请到的内存基址是各自独立的,并且可以是相同的虚拟地址。
====== 第 11 章 用户进程的创建与调度 ======
GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_11
运行截图:
在kernel的main()函数中创建了2个用户进程(分别循环执行a++、b++),创建了2个内核线程(分别打印a、b)
用户进程的priority和ticks设置为3,内核现成的设置为13。所以,运行结果中,打印更快、增长更慢。
p.s.: 由于文件系统尚未实现,这里暂时用函数代替file来创建用户进程。
代码结构:
[书]操作系统真象还原 -- 第11、12章 用户进程及调度、系统调用、内存管理相关推荐
- 《操作系统真象还原》第七章
<操作系统真象还原>第七章 本篇对应书籍第七章的内容 本篇内容介绍了操作系统的中断处理机制,建立中断描述符表,填充门描述符,以及中断处理程序,初始化8259A中断控制器实现外部中断功能,控 ...
- 《操作系统真象还原》第六章 ---- 开启c语言编写函数时代 首挑打印函数小试牛刀 费心讨力重回gcc降级 终尝多日调试之喜悦
文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 修改代码的小闲聊 编写print.S(实现打印函数) print.S代码 print.h代码和stdint.h代码 修改main ...
- 《操作系统真象还原》第十三章 ---- 编写硬盘驱动软件 行百里者半九十终成时喜悦溢于言表
文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 闲聊时刻 提前需要准备编写的函数 实现printk 实现sprintf函数 创建从盘 创建从盘的步骤 修改后的bochsrc.d ...
- 《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级
文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 + 小建议 修改代码前的小闲聊 修改loader.S(读取内存大小) 检验是否成功读取内存大小 开始分页新篇章的分页理解 一级页 ...
- 《操作系统真象还原》第四章 ---- 剑指Loader 刃刺GDT 开启新纪元保护模式 解放32位
文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 看到第四章的一些很有趣的话 想记录下来 修改MBR.S 更新配置文件boot.inc 忽生疑惑(怎么是平坦模型?) 编写Loader.S 调用 ...
- [书]操作系统真象还原 -- 第5章 开启保护模式、开启分页机制
mbr:加载loader,跳转 loader: 1)调用BIOS中断获取内存大小; 2)构建GDT.开启保护模式; 3)构建页目录表和页表.开启分页机制; FILE:loader.asm ; FIL ...
- 操作系统真象还原_第零章_解惑
第零章 解惑 1.操作系统是什么? 类比一 古代部落害怕手下的人滥用武器伤害他人,所以制造武器是要向部落申请.而人们只有申请的资格,申请结果有部落决定. 设计操作系统的人害怕使用者滥用硬件(例如把操作 ...
- 《操作系统-真象还原》11. 用户进程
文章目录 为什么要有任务状态段 TSS CPU 原生支持的任务切换方式 通过"中断门 + 任务门"进行任务切换 现代操作系统采用的任务切换方式 code 实现用户进程 创建和执行进 ...
- [书]操作系统真象还原 -- 第10章 控制台(信号量, 锁)、键盘(环形缓冲区))
GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_10 运行截图: 1.控制台console // FILE: ...
最新文章
- [转]通过脚本添加登陆/注销/开机/关机脚本
- 计算机编程语言python-初学者最容易学的六种编程语言
- elasticsearch 安装过程中可遇到的问题
- 【渝粤教育】广东开放大学 Photoshop 图像处理 形成性考核 (24)
- 项目管理(5):备战pmp
- RocketMQ如何保证消息不丢失? 如何快速处理积压消息?
- 交互式多模型_26亿参数,智源、清华开源中文大规模预训练模型
- php英文书籍在线,php英语四级在线练习系统
- 网页版微博HTML解析和提取,爬虫聚焦——以新浪微博为例
- 计算机enter代表什么意思,enter是什么意思
- 基于python的图像识别
- destoon运行流程
- 大数据和数据中心的对比分析
- 2020年有寓意的领证日期_2020年领证日期怎么选
- python判断矩阵是否对称_矩阵的特征分解(推导+手算+python计算+对称矩阵的特征分解性质)...
- http url特殊字符转义
- 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...
- 我是如何拿到腾讯offer的(干货面经+经验分享)
- 李宏毅老师《机器学习》课程笔记-4.2 Batch Normalization
- Vue学习 — 详解Vue生命周期