当前位置: 首页 > news >正文

1629_MIT_6.828_xv6_chapter1操作系统的组织

         全部学习汇总:GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         这一次整理一下操作系统组织相关的知识,主要还是xv6教学操作系统相关的知识。当然,很多知识在这类技术领域是通用的。

1. 操作系统的主要功能在上一个章节中其实是已经总结出来了,这里算是再次说明:硬件的抽象以及复用、进程之间的隔离、进程之间的交互。

2. 这里从另一个方面介绍了RTOS的设计实现,恰恰可以让人感受到其实xv6是一个非实时性的操作系统。

1. exec的调用是创建分配进程存储空间的方式。

2. 隔离设计的实现其实是需要依赖于硬件功能的,这里依赖的硬件功能主要是存储映射,实现虚拟地址与物理地址之间的映射转换。

1. 错误权限下的访问会导致失败,之后OS会对这个异常的进程进行清理。

2. 内核是在内核空间中运行的软件,在SV的权限下执行。

3. 宏内核的整个操作系统都在内核空间内。

4. 宏内核的两个优点:第一,设计的过程中无需考虑各种权限的设计;第二,内核之间的接口依赖实现较为简单。

5. 宏内核很大的一个缺点:内核的错误可能会导致整个系统的重启。

6. 微内核设计中,操作系统的很多功能是在用户层设计的,这样的内核简单。

1. vx6是宏内核,大部分的UNIX都是。我疑问Linux是什么,其实在后面的内容中明确说了是宏内核。宏内核的系统,在内核中实现了所有操作系统的功能。

2. 从进程的角度看,进程可以理解为自己是独占了整个计算机硬件的。至少从设计时候的逻辑存储角度考虑是如此。

3. 这里提到的页表是一个很重要的功能,它主要实现了虚拟地址到物理地址的转换。

1. 这里的这个图给出来了一个进程角度能够看到的存储的分布。

2. 进程有一个叫做proc的结构体存储了进程相关的信息。每一个进程有两个堆栈,用户的以及内核的。其实,正是由于这种内核堆栈的存在,可以让内核管理下的硬件能够实现高度复用。

1. 这里给出了进程可能的几种状态:已经分配、就绪可以运行、运行中、等待中、退出中。

2. 页表信息也记录了进程分配的实际的物理地址信息。

3. 为什么运行的地址选择了0x100000,其实是为了避开跟硬件的冲突。我把这个跟之前做测试的时候看到的一个问题弄混了,两个地址其实是相差了16倍。下面是我之前产生疑惑的代码的部分:

1. 关于内核的启动过程,后面还得结合代码以及调试追踪环境来逐步理解一下。

2. 这里看到了另一个说明点,那就是进程的PID分配。这个分配其实是在allocproc调用的时候分配出来的。

1. 这里看到一个比较有意思的地方,最早执行的一段代码居然是一段汇编程序。

2. 这部分的内容涉及到了太多的其他章节的知识,读的时候也有点迷糊,后面不行再回读一下。

         操作系统提供的进程隔离主要是通过了独立的进程堆栈空间以及存储映射技术来实现的,自然,堆栈空间其实还是可以继续细分为两种的。

         很多UNIX系统是宏内核,这里明确说明了Linux其实也是宏内核。不过,QNX是一个微内核。

         这样,这个章节的内容算是简单看了一下,接触到了一些全新的知识,但是理解不是很深刻。

http://www.lryc.cn/news/2970.html

相关文章:

  • 基于Golang哈希算法监控配置文件变化
  • 关于一笔画问题的一些思考(欧拉路Fleury算法、逐步插入回路法、以及另一种可能的解法)
  • vlookup怎么用详细步骤,看这一篇就够了
  • 雅思经验(9)之小作文常用词汇总结
  • 【Python语言基础】——Python NumPy 数组创建
  • 【大数据】Hadoop-Kms 安装及相关详细配置,看完你就会了
  • SpringCloud分布式框架
  • Csss属性display,visibility区别,对渲染页面的影响
  • 怎么给笔记本电脑外接两台显示器?
  • 生成树协议 — STP
  • git必会的知识点
  • 【hello, world】计算机系统漫游
  • 1. SpringMVC 简介
  • 《解谜三星堆:开启中华文明之门》-范勇 笔记
  • 锐捷(十四)mpls vxn optionc的关键问题所在和具体问题分析
  • Python语言零基础入门教程(十四)
  • Https 协议超强讲解(一)
  • 5.Redis 实现点赞 优化登陆(验证码 token..)
  • scscanner:一款功能强大的大规模状态码扫描工具
  • Word 和 LaTeX 文档相互转换
  • python自动发送邮件实现
  • ccc-Classification-李宏毅(4)
  • Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)
  • 【C++/QT】QT5.6解析Excel教程(qtxlsx)
  • C++之智能指针
  • Redis实战-session共享之修改登录拦截器
  • 数据可视化,流程化处理pycharts-
  • 1626_MIT 6.828 lab1课程大纲学习过程整理
  • 12月无情被辞:想给还不会自动化测试的技术人提个醒
  • 开发必备技术--docker(使用篇)