随笔分类 - 极客谈
摘要:你好,我是LMOS。 上节课我带你通过KVM技术打开了计算机虚拟化技术的大门,KVM技术是基于内核的虚拟机,同样的KVM和传统的虚拟化技术一样,需要虚拟出一台完整的计算机,对于某些场景来说成本会比较高,其实还有比KVM更轻量化的虚拟化技术,也就是今天我们要讲的容器。 这节课我会先带你理解容器的概念,
阅读全文
摘要:你好,我是LMOS。 上节课,我们理解了Linux里要如何实现系统API。可是随着云计算、大数据和分布式技术的演进,我们需要在一台服务器上虚拟化出更多虚拟机,还要让这些虚拟机能够弹性伸缩,实现跨主机的迁移。 而虚拟化技术正是这些能力的基石。这一节课,就让我们一起探索一下,亚马逊、阿里、腾讯等知名公司
阅读全文
摘要:你好,我是LMOS。 上节课,我们通过实现一个获取时间的系统服务,学习了Cosmos里如何建立一个系统服务接口。Cosmos为应用程序提供服务的过程大致是这样的:应用程序先设置服务参数,然后通过int指令进入内核,由Cosmos内核运行相应的服务函数,最后为应用程序提供所需服务。 不知道你是否好奇过
阅读全文
摘要:你好,我是LMOS。 一路走来,咱们的Cosmos系统已经有内存管理,进程、文件、I/O了,这些重要的组件已经建立了,也就是说它们可以向应用程序提供服务了。 但就好像你去各政府部门办理业务证件一样,首先是前台工作人员接待你,对你的业务需求进行初级预判,然后后台人员进行审核并进行业务办理,最后由前台人
阅读全文
摘要:你好,我是LMOS。 上节课,我们一起了解了套接字的工作机制和数据结构,但套接字有哪些基本接口实现呢?相信学完这节课,你就能够解决这个问题了。 今天我会和你探讨套接字从创建、协议接口注册与初始化过程,还会为你深入分析套接字系统,是怎样调用各个功能函数的。通过这节课,相信你可以学会基于套接字来编写网络
阅读全文
摘要:你好,我是LMOS。 前面我们了解了网络的宏观架构,建立了网络模块知识的大局观,也进行了实际的组网实践。现在我们来瞧一瞧Linux的网络程序,不过想要入门Linux的网络编程,套接字也是一个绕不开的重要知识点,正是有了套接字,Linux系统才拥有了网络通信的能力。而且网络协议的最底层也是套接字,有了
阅读全文
摘要:你好,我是 LMOS。 上节课我们对一次请求到响应的过程积累了一些宏观认识,相信你已经对整个网络架构有了一个整体蓝图。这节课,让我们来仔细研究一下网络数据是如何在内核中流转的,让你开阔视野,真正理解底层工程的实现思路。 凡事先问目的,在网络数据在内核中的流转,最终要服务于网络收发功能。所以,我会先带
阅读全文
摘要:你好,我是 LMOS。 从这节课起,我们就要开始学习网络篇的内容了。网络是一个极其宏大的知识结构,我会通过五节课带你了解计算机网络的关键内容。 具体我们是这样安排的。作为网络篇的开始,今天这节课我会从一个面试中高频出现的问题切入,带你梳理从输入URL到网卡的网络数据流动过程中都发生了什么事。如果你真
阅读全文
摘要:你好,我是LMOS。 在前面的课程中,我们已经实现了Cosmos下的文件系统rfs,相信你已经感受到了一个文件系统是如何管理文件的。今天我们一起来瞧一瞧Linux是如何管理文件,也验证一下Linux那句口号:一切皆为文件。 为此,我们需要首先搞清楚什么是VFS,接着理清为了实现VFS所用到的数据结构
阅读全文
摘要:你好,我是LMOS。 我们在上一节课中,已经建立了仓库,并对仓库进行了划分,就是文件系统的格式化。有了仓库就需要往里面存取东西,对于我们的仓库来说,就是存取应用程序的文件。 所以今天我们要给仓库增加一些相关的操作,这些操作主要用于新建、打开、关闭、读写文件,它们也是文件系统的标准功能,自然即使我们这
阅读全文
摘要:你好,我是LMOS。 上一节课中,我们已经设计好了文件系统数据结构,相当于建好了仓库的基本结构。 今天,我将和你一起探索仓库的划分,即什么地方存放仓库的管理信息,什么地方存放进程的“劳动成果”(也就是文件),对应于文件系统就是文件系统的格式化操作。 具体我是这样安排的,我们先来实现文件系统设备驱动,
阅读全文
摘要:你好,我是LMOS。 你有没有想过,蜜蜂把劳动成果变成蜜糖存放在蜂巢中,人类把劳动成果量化成财富存放在银行,但一个进程的劳动成果放在哪里呢? 看到这里,你可能有疑问,进程有劳动成果吗?当然有,进程加工处理的数据就是进程的劳动成果,可是这个“劳动成果”,如何表示、如何组织,又放在哪里呢?这些问题都会在
阅读全文
摘要:你好,我是LMOS。 前面我们已经完成了Cosmos的驱动设备的建立,还写好了一个真实的设备驱动。 今天,我们就来看看Linux是如何管理设备的。我们将从Linux如何组织设备开始,然后研究设备驱动相关的数据结构,最后我们还是要一起写一个Linux设备驱动实例,这样才能真正理解它。 感受一下Linu
阅读全文
摘要:你好,我是LMOS。 在上一课中,我们实现了建立设备的接口,这相当于制定了部门的相关法规,只要遵守这些法规就能建立一个部门。当然,建立了一个部门,是为了干活的,吃空饷可不行。 其实一个部门的职责不难确定,它应该能对上级下发的任务作出响应,并完成相关工作,而这对应到设备,就是如何处理内核的I/O包,这
阅读全文
摘要:你好,我是LMOS。 在上节课里,我们对设备进行了分类,建立了设备与驱动的数据结构,同时也规定了一个驱动程序应该提供哪些标准操作方法,供操作系统内核调用。这相当于设计了行政部门的规章制度,一个部门叫什么,应该干什么,这些就确定好了。 今天我们来继续探索部门的建立,也就是设备在内核中是如何注册的。我们
阅读全文
摘要:你好,我是LMOS。 小到公司,大到国家,都有各种下属部门,比如我们国家现在有教育部、科学技术部、外交部,财政部等,这些部门各自负责完成不同的职能工作,如教育部负责教育事业和语言文字工作,科学技术部负责推动解决经济社会发展的重大科技问题。 既然大道相通,那我们的Cosmos中是否也是类似这样的结构呢
阅读全文
摘要:你好,我是LMOS。 在前面的课程中,我们已经写好了Cosmos的进程管理组件,实现了多进程调度运行,今天我们一起探索Linux如何表示进程以及如何进行多进程调度。 好了,话不多说,我们开始吧。 Linux如何表示进程 在Cosmos中,我们设计了一个thread_t数据结构来代表一个进程,Linu
阅读全文
摘要:你好,我是LMOS。 上节课,我带你一起设计了我们Cosmos的进程调度器,但有了进程调度器还不够,因为调度器它始终只是让一个进程让出CPU,切换到它选择的下一个进程上去运行。 结合前面我们对进程生命周期的讲解,估计你已经反应过来了。没错,多进程调度方面,我们还要实现进程的等待与唤醒机制,今天我们就
阅读全文
摘要:你好,我是LMOS。 上节课,我们了解了什么是进程,还一起写好了建立进程的代码。不知道你想过没有,如果在系统中只有一个进程,那我们提出进程相关的概念和实现与进程有关的功能,是不是就失去了意义呢? 显然,提出进程的目的之一,就是为了实现多个进程,使系统能运行多个应用程序。今天我们就在单进程的基础上扩展
阅读全文