操作系统内核的一些事

简介:
一.总的来讲,操作系统只要能实现以下两点就可以了:
1.时间的假象和空间的假象
时间假象的作用是实现了多进程/多线程;空间假象的作用是实现了虚拟内存。无疑,这两点是现代操作系统的基石。
2.和硬件接口以及和用户态的接口
从硬件那里接收信息,这个用中断实现,和硬件互相读写,这个用基本IO实现;从用户接收请求,这个用系统调用...向用户发送信息,这个用信号...。无疑,这样就在接口层次满足了上层用户和底层硬件的要求,无疑,UNIX在这一点上是成功的(信号,IPC,POSIX...)。
二.大内核和微内核
如果我们把操作系统内核在其生命周期的前期按照时间分割,我们把它分为源码阶段和二进制阶段,大内核和微内核的区分是二进制阶段的区分。我们都知道,Linux是大内核,然而为何大而不乱呢?实际上看看它的源码就明白了,它的源码组织非常好,核心文件不到100个,其它的都是驱动或者体系结构相关的代码。毕竟,开发者知道,对于二进制文件,人是看不懂的,人所看的是源码,将二进制文件分开,无疑会增加维护的复杂性,更何况,将问题控制在源码阶段就节省了很多调试时间。
三.设备驱动开发
1.阅读datasheet,编写IO、中断例程
2.和操作系统内核接口,也就是插入内核最低端
3.和用户态接口,也就是在最上端导出一个用户接口,比如ioctl
4.编写用户态demo和工具进程,调用第3步的接口
5.试用,调试打包
6.总结,层次结构-从上到下:最终用户-应用程序员-系统程序员-驱动程序员-硬件工程师
四.到底应不应该在内核中解决fork炸弹

fork炸弹臭名昭著,一堆看似乱码的字符就能耗尽你的cpu:.(){.|.&};.。如果想在内核解决它,那是很简单的,那就是控制task_struct的层数,我们知道Linux进程是分层树形组织的,如果限制层数最多为5层,那么该炸弹最多也就是炸五次就无法发挥作用了,然而这却不是好方法,因为这会损害那些正好需要6层或以上的正常程序的利益。其实还有很多解决办法:1.利用cpu组调度,限制它们可以使用的资源;2.修改oom killer的核心算法,优先砍掉那些过于长,然而却很瘦的树枝,这也符合园艺工人的操作方式,因为这种枝丫会带走过多的养分!



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271010


相关文章
|
5天前
|
存储 物联网 调度
操作系统的心脏:内核深度解析
在数字世界的构建中,操作系统扮演着基石的角色,而其核心—内核,则是这一复杂系统的灵魂。本文将深入探讨操作系统内核的工作原理,揭示它是如何管理硬件资源、运行程序以及提供系统服务的。通过理解内核的结构和功能,我们可以更好地把握计算机系统的运作机制,进而优化和创新我们的技术实践。
|
26天前
|
安全 调度 开发者
探索操作系统的心脏:现代内核架构与挑战
【10月更文挑战第7天】 本文深入探讨了现代操作系统内核的复杂性和功能性,从微观角度剖析了内核在系统运行中的核心作用及其面临的主要技术挑战。通过浅显易懂的语言解释专业概念,旨在为读者提供一个关于操作系统内核的全面视角。
35 2
|
14天前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
2天前
|
存储 程序员 Linux
深入理解操作系统:从用户到内核的旅程
【10月更文挑战第31天】本文将带领读者踏上一场从应用层到内核层的探索之旅,揭示操作系统如何协调硬件资源、管理进程和提供系统服务。我们将通过具体代码示例,展示如何在Linux环境下编写简单的程序来与操作系统交互,并解释背后的原理。文章旨在为非专业读者提供一个易于理解的操作系统概念框架,同时为有志于深入了解计算机科学核心的读者打下坚实基础。
|
10天前
|
存储 Linux 调度
探索操作系统的心脏:内核设计与实现
【10月更文挑战第23天】在这篇文章中,我们将深入探讨现代操作系统的核心—内核。通过浅显易懂的语言和实例,本文旨在揭示操作系统内核的设计哲学、关键组件以及它们如何协同工作以支持复杂的系统功能。无论你是初学者还是有一定基础的开发者,本篇文章将为你打开一扇了解操作系统深层工作原理的大门。
25 8
|
8天前
|
安全 数据安全/隐私保护
探索操作系统的心脏:内核
【10月更文挑战第25天】操作系统是现代计算的核心,而内核则是这个核心中的心脏。本文将深入浅出地探讨内核的设计、功能以及它如何管理计算机资源。我们将通过简单的比喻和实例来理解复杂的技术概念,使读者能够在轻松的氛围中掌握这一主题。
|
9天前
|
存储 调度
探索操作系统的心脏:内核
【10月更文挑战第25天】在数字世界的每一次跳动中,都有一个不可见却至关重要的部分在默默工作——操作系统的内核。它是计算机系统的指挥中心,管理着硬件资源,协调着软件运行。本文将揭开内核的神秘面纱,带你领略其精妙的设计和复杂的功能。从进程管理到内存分配,再到文件系统,我们将一探究竟,看看这个让计算机活起来的“心脏”是如何跳动的。
16 2
|
9天前
|
算法 调度
探索操作系统的心脏:内核与进程管理
【10月更文挑战第25天】在数字世界的复杂迷宫中,操作系统扮演着关键角色,如同人体中的心脏,维持着整个系统的生命力。本文将深入浅出地剖析操作系统的核心组件——内核,以及它如何通过进程管理来协调资源的分配和使用。我们将从内核的概念出发,探讨它在操作系统中的地位和作用,进而深入了解进程管理的机制,包括进程调度、状态转换和同步。此外,文章还将展示一些简单的代码示例,帮助读者更好地理解这些抽象概念。让我们一起跟随这篇文章,揭开操作系统神秘的面纱,理解它如何支撑起我们日常的数字生活。
|
10天前
|
安全 物联网 Linux
操作系统的心脏——内核
【10月更文挑战第22天】 本文将深入探讨操作系统的核心组成部分——内核,包括其定义、功能、类型以及在现代计算中的重要性。通过了解内核的工作原理和设计哲学,我们可以更好地理解计算机是如何执行任务和管理资源的。
45 2
|
16天前
|
网络协议 Linux 调度
深入探索Linux操作系统的心脏:内核与系统调用####
本文旨在揭开Linux操作系统中最为核心的部分——内核与系统调用的神秘面纱,通过生动形象的语言和比喻,让读者仿佛踏上了一段奇妙的旅程,从宏观到微观,逐步深入了解这两个关键组件如何协同工作,支撑起整个操作系统的运行。不同于传统的技术解析,本文将以故事化的方式,带领读者领略Linux内核的精妙设计与系统调用的魅力所在,即便是对技术细节不甚了解的读者也能轻松享受这次知识之旅。 ####