学习操作系统的知识,看哪本书好

如题所述

合实际一起看,效果会好的多。

书籍上讲的多是理论,可以自己再去找个开源的嵌入式OS,一起看着代码实现,就会好的多了。比如FreeRTOS,可以也买本书,学会编译,并在电脑里当成个应用跑起来,学会自己创建进程、协程后,进入对应的API实现看看。内核的调度、优先级、内存管理、资源管理、抢占式任务切换等等。

选择嵌入式OS是因为足够小,毕竟要为这个事情读Linux源码就是个大坑。FreeRTOS拥有大部分现代OS的各种核心功能,用来学习真是个好的例子。我也是学了FreeRTOS后,才逐渐让数年前操作系统的知识变得灵活起来了。

举几个例子,在FreeRTOS中的实现:

1. 线程管理:
给每个线程建立个私有的堆栈,每次在线程里调用任何的函数,所需的参数传递、本地变量等都是放在线程私有堆栈里的。这样各个线程之间不会发生混乱。该堆栈的建立一般还有个最大长度值,以免浪费内存过多,同时也限制了递归过深的情况。需要OS应用一开始就进行一个估算,调用栈会有多深。

2. 内存管理:
一般是先从物理内存里申请一大块内存,建立针对这块内存的分配表,每当有申请内存就记录一条,释放内存就选择时机将剩余内存合并。分配策略有多种,比如按照顺序,或者优先选择符合条件的最小空闲段。每个线程都建立自己的堆,有助于提高内存分配效率。

3. 进程/线程切换:
使用系统硬件上的定时器,每隔一定时间就发生一次硬件中断,此时当前进程/线程被停止,所有寄存器被保存到进程私有栈里。两次中断之间实际执行任务代码的部分,就叫做一个时间片。然后调用中断处理函数。这个中断处理函数就是OS内核里的任务切换功能,会重新选择处于就绪(ready)状态的各个任务中优先级最高的那个来运行。所以,理解并实现这个中断处理函数,就是理解任务切换的关键。放心代码不长。

4. OS内核调用:
现代的CPU,包括一些嵌入式MCU,都会严格区分user space和kernel space。两者的各种资源相对独立,甚至堆栈都不同。当user application需要调用内核提供的服务时,往往是将自己要调用的内核调用符号、参数、返回值放到内存中指定位置,然后触发一个软件中断。比如Cortex-M系列的SVCall,或者DOS的80中断。此时就切换到了kernel mode。此模式下的中断处理函数会根据系统调用内容分发调用请求,执行结束后,再根据返回地址跳转回去。

我推荐 6.828 / Fall 2014,往年的视频也很容易找到。这门课会接触到两个小的操作系统: xv6 和 jOS。课堂上主要讲xv6, 一个小的unix操作系统;而课程Lab分6~7个阶段让你填写jOS的关键代码。
这门课的好处就是理论加实践,而且课程节奏很好。
比如讲完系统调用,你就可以试着给xv6加个timer调用;讲完threads,你就可以试着给xv6加个系统调用,然后让这个系统支持线程...
Lab实现的jOS和xv6有很多设计决策不同,对比它们你可以更好的理解什么是操作系统;当然能自己亲手写一些代码感觉会很不一样(理论怎么转换到实践)

几点体会:

homework也许比Lab更有启发性(我是这么认为的);

如果看过CSAPP就最好了,汇编都不用学了,shell也会写了,memory也了解了。
6.828有个作业提交系统,只要邮箱就能注册了,然后可以互评Lab...

有了一些自己的体验后,然后结合书看也许就完全不一样了。
温馨提示:内容为网友见解,仅供参考
无其他回答

推荐计算机基础知识学习的书籍
1、《计算机基础(第二版)》——姜岩、王秀玲 本书介绍了信息与计算机的基础知识、Windows XP操作系统的基本操作和基本使用知识、Word 2003文字处理软件的基本知识、Excel 2003电子表格处理软件的基本知识和PowerPoint 2003文档 演示软件等知识做了简单的介绍。2、《计算机应用基础》 ——刘锡轩、丁恒、侯晓...

关于计算机相关的书籍有哪些值得推荐的?
六.操作系统 《操作系统导论》本书围绕虚拟化、并发和持久性等核心概念,全面介绍了现代操作系统的主要组件,适合深入学习操作系统知识的读者。七.程序员软技能 《软技能:代码之外的生存指南(第2版)》本书从生活习惯、思维方式等角度出发,为软件开发人员提供全面的“软技能”指导,帮助他们在职业和个人...

计算机方面的书籍有哪些?
1. 《计算机操作系统》:这本书详细介绍了操作系统的原理和实现。配合《计算机操作系统学习指导与题解》,可以加深理解并巩固所学知识,同时可以通过题目来测试自己的掌握程度。2. 《计算机组成原理》:该书详细讲解了计算机硬件系统的各个方面,包括系统总线、存储器、控制器和CPU等,内容详实且分类清晰。...

关于计算机的书籍 给你推荐以下五本书
1、《计算机组成结构化方法》是由机械工业出版社出版的图书,作者是(荷)塔嫩鲍姆(Tanenbaum,A.S.)。本书可以作为计算机专业本科生学习计算机组成与结构课程的教材或参考书,也可供其他相关专业人员参考。2、《现代操作系统》是机械工业出版社出版的图书,作者是(荷兰)AnderwS.Tanenbaum。书中不仅涵盖了...

谁有Windows 操作系统原理方面的书籍,最好是国外教材,中英文都可以,谢 ...
《操作系统实用教程:螺旋方法》􀁺 采用螺旋方法和深度导向方法讲解操作系统原理。􀁺 扩展知识。结合当时的行业历史,讲述所讨论的操作系统。􀁺 讨论算法级解决方案,而没有列出实际代码,便于使用不同编程语言实现 个人认为最好的还是这本《操作系统:精髓与设计原理(第五版)...

求推荐有关操作系统方面经典实用的书籍?
1. 实用操作系统概念(影印版)2. 操作系统概念(第六版 影印版)这个作者绝对是顶尖级的,来自贝尔实验室,是目前世界上操作系统方面的领军人物。这两本书第二本和第一本很多地方相似,区别在于第二本理论偏重一些,第一本实例讨论的更多一些。这两本书别看很厚,但是写的非常流畅,属于比较易读的...

计算机专业需要看哪些书
1、《数据库系统概论(第4版)》,作者是王珊,萨师煊,高等教育出版社出版。2、 《数据结构》,作者是严蔚敏,吴伟民,清华大学出版社出版。3、《计算机组成原理》,作者是唐朔飞,高等教育出版社出版。4、《计算机系统结构》,作者是李学干,西安电子科技大学出版社出版。5、《计算机操作系统》,作者是...

学习linux操作系统用哪些书比较好?
1. 《Linux系统与网络服务管理 技术大全(第二版)》杨明华 谭励等编著 电子工业出版社 79元 含光盘一张;2. 《Linux系统管理与网络管理》 余柏山等编著 清华大学出版社 89元 含光盘一张。读完这两本书,基本上就够用了。建议:1. 最好在系统中先安装VMware虚拟机,然后在虚拟机中安装Redhat ...

计算机408都有哪些值得购买的参考书?
1.《计算机组成原理》(第2版)-唐朔飞:这本书详细介绍了计算机硬件的组成和工作原理,包括CPU、存储器、输入输出设备等。内容系统全面,适合初学者入门。2.《现代操作系统》(第3版)-汤子瀛:这本书介绍了操作系统的基本概念、进程管理、内存管理、文件系统等核心内容。讲解清晰,适合深入学习操作系统...

等了好久的《操作系统导论》Operating Systems终于来了
这样不仅能够提高学习效率,还能增强学习兴趣,让读者对操作系统有更全面、深入的理解。因此,本书不仅是一本内容丰富、实践性强的教材,更是一本激发读者思考、促进互动学习的优质读物。无论是教师还是学生,都能从中获得宝贵的知识和经验,提升自己的操作系统知识水平。

相似回答