1 操作系统是什么
-
用户使用的交互系统
-
Linux操作系统,Window操作系统
2 内核是什么
从技术上来看,内核其实是硬件和软件之间的连接层,我们也可以称之为中间层。
网卡, 磁盘, 内存,寄存器。。。。硬件设备。
运行在操作系统上面的是我们的软件程序。web服务器。
软硬件之间的链接层。
我们还可以从以下几个方面来理解内核
-
你可以把内核看作一个库,例如read write这些函数,内核提供了许多系统调用,供我们的应用程序使用。
-
你可以把内核看做一个Manager, 这个Manager管理资源的共享和隔离,例如给每个进程分配多大的资源。
你还可以这么理解内核
-
内核就是一个大的Linux程序,做了好多它应该做的事情。
3 内核实现的策略
宏内核
内核的所有代码,包括子系统(如内存管理、文件管理、设备驱动程序)都打包到一个文件中。内核中的每一个函数都可以访问到内核中所有其他部分。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的
微内核
最基本的功能由中央内核(微内核)实现。所有其他的功能都委托给一些独立进程,这些进程通过明确定义的通信接口与中心内核通信。
4 内核包含哪些核心的模块
4.1 进程的调度,切换
1 电脑--》你现在可以打开多个应用
本质上是你的后台开了多个进程,这也就意味着你的cpu运行了多个进程。
3个人 干100个任务
是不是需要有一个人来管理这个任务的分配呀?
100个任务还没干完,又来了新的任务
这个新的任务分配给哪个cpu? 是不是也是需要管的呀
不是每个任务都有一样的优先级,那怎么调度保证相对的公平呢?
以上都是内核需要去解决的问题。
4.2 内存管理
每个进程都需要资源,都需要存储和操作数据,所以我们需要一个人来对资源进行分配,
当进程使用完资源之后,我们需要回收资源。
所以我们需要对内存进行管理。
4.3 虚拟内存机制
每个进程都要相互隔离,需要有自己的独立空间,所以需要有一个机制来进行隔离
这个就是我们的虚拟内存机制。
4.4 网络
网卡,接收和发包的地方
当你使用微信的时候,你的第一想法是不是摇一摇,先找下好友哈哈。
内核需要和网络交互。
4.5 设备驱动程序
我们的电脑为什么可以连接usb和手机,是因为我们的内核有设备驱动驱动。
有的时候我们电脑没有声音,可能是因为没有装声音的驱动。
4.6 进程通信机制&锁
进程之间需要相互通信,需要共享资源。
进程之间操作资源的时候,不能相互持有对方的资源而不释放,所以还需要有锁的机制。
4.7 其他模块
-
时间管理
-
页面回收
-
数据同步
-
很多时候数据是操作的内存的数据,计算机不会频繁的将数据刷到磁盘。但是你必须选择在合适的时候保存到磁盘,不然会发生丢数据的情况。数据的同步就是解决这个问题。
-
-
文件系统