学习编程,操作系统是你必须要掌握的基础知识,那么操作系统到底是什么呢?
这还用说么,操作系统不就是Windows、Linux、Mac、IOS、Android、IOS这类我们天天都在用的东西么?
此话不假,但是操作系统作为计算机科学里的一门基础学科,肯定不能这么接地气对不对,总的来点高大上的概念,震慑一下你们吧。
根据百度百科的介绍,操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
这个介绍足够高大上了吧,那么到底啥是操作系统呢,简单来说,操作系统就是管理计算机硬件和软件资源的一种软件,计算机里的硬盘、鼠标键盘、显示器等设备,都要由它来管理,你打开游戏、打开浏览器或者是看电影,也都要通过操作系统来执行。
没有了操作系统,电脑就失去了灵魂,只是一堆硬件而已。
了解了操作系统的基本概念之后,接下来我们再来看看,为什么我们要学习操作系统呢?
首先,当然是因为面试要考啦。
其次,无论你学习什么编程语言,和都避免不了和操作系统打交道,比如你学习Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的,所以Java里的线程常常要和操作系统的线程或者进程一一对应。
此外,你会学习到内存分配的知识,比如c++里可以直接分配一段内存,此时实际上是调用操作系统提供的API进行内存分配。
操作系统不仅负责管理进程和线程的调度、内存的分配和管理,以及设备和IO的处理,还要负责管理文件系统和网络。
最重要的是,操作系统要负责把代码从硬盘加载到内存,再告诉cpu去读取内存代码,这是一切计算机运行的基础。
如果不懂操作系统,你在未来学习编程语言的高级特效,涉及到线程进程调度,内存分配,或者是学习Linux相关的知识时,都会一头雾水,所以,只有学会了操作系统,我么才能够更好地学习其他语言和技术。
今天我们就来推荐一份关于操作系统的优质书单!请查收!
操作系统书单
深入理解计算机系统
深入理解计算机系统(第2版) 这本书的全名是:Computer Systems:A Programmer’s Perspective,所以它又被称为 CSAPP。如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读深入理解计算机系统是最有效率的方式。
Randal E. Bryant,1981年于麻省理工学院获得计算机博士学位,1984年至今一直任教于卡内基-梅隆大学。
David R. O’Hallaron卡内基梅隆大学电子和计算机工程系教授。
操作系统导论
这是一本关于现代操作系统的书。全书围绕虚拟化、并发和持久性这3个主要概念展开,介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和I/O子系统、文件系统 )。
本书共50章,分为3个部分,分别讲述虚拟化、并发和持久性的相关内容。本书大部分章节均先提出特定的问题,然后通过书中介绍的技术、算法和思想来解决这些问题。笔者以对话形式引入所介绍的主题概念,行文诙谐幽默却又鞭辟入里,力求帮助读者理解操作系统中虚拟化、并发和持久性的原理。
本书内容全面,并给出了真实可运行的代码(而非伪代码),还提供了相应的练习,适合高等院校相关专业教师教学和高校学生自学。
作者简介
雷姆兹·H.阿帕希杜塞尔(Remzi H.Arpaci-Dusseau)和安德莉亚·C.阿帕希杜塞尔
(Andrea C.Arpaci-Dusseau)夫妇是美国威斯康星大学计算机科学教授。二人都从事计算机操作系统方面的教学和研究。
30天自制操作系统
《30天自制操作系统》是一本兼具趣味性、实用性与学习性的操作系统图书。作者从计算机的构造、汇编语言、C语言开始解说,让读者在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位多任务操作系。
《30天自制操作系统》适合操作系统爱好者和程序设计人员阅读。
作者简介
川合秀实(Hidemi Kawai),生于1975年,是一位以“轻量化”编程思想见长的“非主流”开发者。2000年因自行开发的OSASK项目而名声大噪。OSASK是一个开源的32位微型操作系统,它并非以Linux等内核为基础,而是完全从零开始开发,在一张软盘的容量下实现了GUI、多任务、多语言等高级特性,启动时间只需1秒。本书的内容可以看成是作者以OSASK为蓝本,教会读者从零开始开发一个操作系统,同时可以让初学者在编写操作系统的过程中,了解操作系统背后更多的知识。
更多优质书单推荐!