======  第 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章 用户进程及调度、系统调用、内存管理相关推荐

  1. 《操作系统真象还原》第七章

    <操作系统真象还原>第七章 本篇对应书籍第七章的内容 本篇内容介绍了操作系统的中断处理机制,建立中断描述符表,填充门描述符,以及中断处理程序,初始化8259A中断控制器实现外部中断功能,控 ...

  2. 《操作系统真象还原》第六章 ---- 开启c语言编写函数时代 首挑打印函数小试牛刀 费心讨力重回gcc降级 终尝多日调试之喜悦

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 修改代码的小闲聊 编写print.S(实现打印函数) print.S代码 print.h代码和stdint.h代码 修改main ...

  3. 《操作系统真象还原》第十三章 ---- 编写硬盘驱动软件 行百里者半九十终成时喜悦溢于言表

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 闲聊时刻 提前需要准备编写的函数 实现printk 实现sprintf函数 创建从盘 创建从盘的步骤 修改后的bochsrc.d ...

  4. 《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 部分缩写熟知 + 小建议 修改代码前的小闲聊 修改loader.S(读取内存大小) 检验是否成功读取内存大小 开始分页新篇章的分页理解 一级页 ...

  5. 《操作系统真象还原》第四章 ---- 剑指Loader 刃刺GDT 开启新纪元保护模式 解放32位

    文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 看到第四章的一些很有趣的话 想记录下来 修改MBR.S 更新配置文件boot.inc 忽生疑惑(怎么是平坦模型?) 编写Loader.S 调用 ...

  6. [书]操作系统真象还原 -- 第5章 开启保护模式、开启分页机制

    mbr:加载loader,跳转 loader: 1)调用BIOS中断获取内存大小; 2)构建GDT.开启保护模式;  3)构建页目录表和页表.开启分页机制; FILE:loader.asm ; FIL ...

  7. 操作系统真象还原_第零章_解惑

    第零章 解惑 1.操作系统是什么? 类比一 古代部落害怕手下的人滥用武器伤害他人,所以制造武器是要向部落申请.而人们只有申请的资格,申请结果有部落决定. 设计操作系统的人害怕使用者滥用硬件(例如把操作 ...

  8. 《操作系统-真象还原》11. 用户进程

    文章目录 为什么要有任务状态段 TSS CPU 原生支持的任务切换方式 通过"中断门 + 任务门"进行任务切换 现代操作系统采用的任务切换方式 code 实现用户进程 创建和执行进 ...

  9. [书]操作系统真象还原 -- 第10章 控制台(信号量, 锁)、键盘(环形缓冲区))

    GITHUB: https://github.com/trb331617/os_elephant/tree/master/chapter_10 运行截图: 1.控制台console // FILE: ...

最新文章

  1. [转]通过脚本添加登陆/注销/开机/关机脚本
  2. 计算机编程语言python-初学者最容易学的六种编程语言
  3. elasticsearch 安装过程中可遇到的问题
  4. 【渝粤教育】广东开放大学 Photoshop 图像处理 形成性考核 (24)
  5. 项目管理(5):备战pmp
  6. RocketMQ如何保证消息不丢失? 如何快速处理积压消息?
  7. 交互式多模型_26亿参数,智源、清华开源中文大规模预训练模型
  8. php英文书籍在线,php英语四级在线练习系统
  9. 网页版微博HTML解析和提取,爬虫聚焦——以新浪微博为例
  10. 计算机enter代表什么意思,enter是什么意思
  11. 基于python的图像识别
  12. destoon运行流程
  13. 大数据和数据中心的对比分析
  14. 2020年有寓意的领证日期_2020年领证日期怎么选
  15. python判断矩阵是否对称_矩阵的特征分解(推导+手算+python计算+对称矩阵的特征分解性质)...
  16. http url特殊字符转义
  17. 电脑桌面上怎么找计算机,电脑自带计算器快捷键 如何快速打开电脑上的计算器...
  18. 我是如何拿到腾讯offer的(干货面经+经验分享)
  19. 李宏毅老师《机器学习》课程笔记-4.2 Batch Normalization
  20. Vue学习 — 详解Vue生命周期

热门文章

  1. 开启辅助服务后equles可能不生效问题. vivo y51
  2. 傻瓜式实战Oracle10g RMAN之数据库备份和恢复
  3. nordic timeslot实现radio和ble一起工作
  4. 【模型训练】YOLOv7吸烟行为检测
  5. MATLAB产生阶跃信号
  6. 数字录音机 汇编实验
  7. html5音频播放器制作复古的卡式录音机,5款磁带模拟插件
  8. 基于云计算的POS系统云支付
  9. gb 服务器 维护 维修,H3C R6800 G2服务器 维护指南-6W100
  10. 三星Samsung SF-531P 驱动