内核操作系统Linux内核变迁杂谈——感知市场的力量
本篇文章个人在青岛游玩的时候突然想到的...今天就有想写几篇关于内核操作系统的博客,所以回家到以后就奋笔疾书的写出来发表了
Jack:什么是操作系统?
我:你买了一台笔记本,然后把整块硬盘彻底格式化,然后再自己编译出一块代码,这块代码能让这台笔记本具有任务(task)管理或者文件管理功能、或者两者兼而有之——这段代码就是操作系统了。
Jack:这类解释比拟妖孽啊。
我:你可以以为我的说法比拟妖孽,不过这是我自己的说法,是我的。这比只会背书、没有自己的想法要好。你可以出错,每个人都市出错,但是不能始终被意淫。
Jack:那,从你的角度来说,Linux内核的开展是什么模样的呢?未来它会怎么走呢?
我:这是一个非常难答复的问题。因为Linux的文化是自在(free),它并不像OpenBSD那样专一于安全,也不想netBSD那样专一于网络,Linux是自在的,只要你有idea并实现它,Linus就会斟酌是否把它加入内核包里,即便Linus不容易把它加入官方内核包,你也可以自在宣告出去。所以,功能性预测几乎是不可能做出来的,不过,在慷慨向上,可以泛泛而谈。
Jack:你泛泛地谈一下呢。
我:首先,不问可知的,它会对既存在的功能进行维护(maintain)和加固(enhancement)。举个例子,Linux的文件系统ext3到ext4的enhancement大概增加了13种功能,其中extent的功能基本上是从Oracle的extent里鉴戒过来的。这样的事情还会一直发生,直到有人宣告Linux内核项目不再继续(?)。其次,IEEE这样的权威机构每一年都在制定新的标准、规程,自然而然会有新的代码产生(无论是驱动层次还是协议层次),这样的代码自然而然会添加到以自在著称的Linux内核里。
Jack:你说的这些都不是本质的操作系统的核心。在本质的操作系统的核心上,会有哪些开展空间呢?
我:你说的本质的操作系统核心是指任务管理、文件系统?
Jack:是的。
我:在任务管理、文件系统这两块,只能做maintain、enhancement。因为这是Linux操作系统的基本、基石,15年前就已奠基好了,不可能再有什么大的创新和修改——除非操作系统理论上有伟大的理论反动。不过,即便是有伟大的操作系统理论反动,也几乎不可能有什么修改了。
只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获。只有追求,才会品味堂堂正正的人。
Jack:为什么?
我:因为任务和文件系统是操作系统的根基,这两块一出现反动,上层的数据库、web server等都市出现相应的反动,整个IT行业既定利益格局将会打破、洗牌重来。
Jack:这不是挺好吗?也是技巧反动的最好结果。
我:理想是美妙的,不过,既得利益体不会答应洗牌重来的事情发生,简单的说,即便有这么完善的理论出现,也不会有资金投入将这理论付诸事实,更别说实现出来的代码能否大面积应用到生产中占领市场。典范的例子是——互联网的OSI七层模型与tcp/ip模型。前者在理论上更完善,不过,这么多年来基本只停留在意淫阶段,而后者则真正占领了市场,成为了事实标准。
Jack:按照你的意思,Linux内核其实已绝对是比拟饱和了,不会再有伟大的打破了吗?
我:是否会有伟大的打破,是个技巧层面的问题。而是否朝伟大的打破方向走,是个利益问题。从目前情况来看,Linux内核在服务器市场上的功能性组件已够用了,仅仅是稳定性、高端市场份额与AIX等还有些差距。假设内核开发人员开收回一些核心组件功能,而这些功能又能给企业带来哪些伟大的利益呢?如果没有伟大的利益,这些功能就是多余的,你认为内核开发人员会去做一些多余的事情吗?
Jack:额。
我:在嵌入式领域,专业的嵌入式操作系统已够多了,如vxworks、uclinux等,其功能也已够用了,缺乏的,只是针对详细的应用的项目流程管理而已。
Jack:那岂不是Linux内核研发能做的事情已很少很少了。
我:相比于20年前,内核研发做的事情是少很多了——每一个行业都是这样,开展了20年以后,能做的事情肯定比刚开始要少很多——在天朝特别如此。不过,操作系统、数据库内核等是基础软件,每个国度为了巩固基础,都市投入伟大的资金,我国的核高基投入大概在1000亿rmb左右。
Jack:那么,搞基础软件岂不是很挣钱?
我:如果你有能力搞操作系统内核、数据库内核等基础软件,这辈子都不用愁吃穿了,国度会养着你的。
文章结束给大家分享下程序员的一些笑话语录:
火车
一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现 列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面是一个老奶 奶和一个年轻漂亮的姑娘。两个上前坐了下来。程序员和那个姑娘他们比较 暧昧地相互看对方。这时,火车进入山洞,车厢里一片漆黑。此时,只听见 一个亲嘴的声音,随后就听到一个响亮的巴掌声。很快火车出了山洞,他们 四个人都不说话。
那个老奶奶在喃喃道, “这个年轻小伙怎么这么无礼, 不过我很高兴我的孙女 扇了一个巴掌”。
项目经理在想,“没想到这个程序员居然这么大胆,敢去亲那姑娘,只可惜那 姑娘打错了人,居然给打了我。”
漂亮的姑娘想,“他亲了我真好,希望我的祖母没有打疼他”。
程序员坐在那里露出了笑容, “生活真好啊。 这一辈子能有几次机会可以在亲 一个美女的同时打项目经理一巴掌啊”
---------------------------------
原创文章 By
内核和操作系统
---------------------------------
内核操作系统Linux内核变迁杂谈——感知市场的力量的更多相关文章
- Android内核和Linux内核的区别
1.Android系统层面的底层是Linux,并且在中间加上了一个叫做Dalvik的Java虚拟机,从表面层看是Android运行库.每个Android应用都运行在自己的进程上,享有Dalvik虚拟机 ...
- 【原创】解BUG-xenomai内核与linux内核时间子系统之间存在漂移
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 一.问题起源 何为漂移?举个例子两颗32.768kH ...
- 【内核】Linux内核Initrd机制解析,内核更新步骤,grub配置说明
什么是Initrd initrd的英文含义是 boot loader initialized RAM disk,就是由boot loader初始化的内存盘.在 linux内核启动前, boot loa ...
- Linux内核分析——Linux内核学习总结
马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核学习总结 一 ...
- 【内核】linux内核启动流程详细分析
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...
- 【内核】linux内核启动流程详细分析【转】
转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...
- 《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁
20135311傅冬菁 分析Linux内核创建一个新进程的过程 一.学习内容 进程控制块——PCB task_struct数据结构 PCB task_struct中包含: 进程状态.进程打开的文件. ...
- 操作系统 linux 内核的三种进程调度方法
1.SCHED_OTHER 分时调度策略: 2.SCHED_FIFO 实时调度策略.先到先服务: 3,SCHED_RR 实时调度策略,时间片轮转 . 实时进程将得到优先调用,实时进程依据实时优先级决定 ...
- Linux内核分析-Linux内核如何装载和启动一个可执行程序
ID:fuchen1994 实验要求: 理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节: 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态 ...
随机推荐
- 去除a标签链接触摸时产生边框
排除误解 网络资料说这个属性只用于iOS(iPhone和iPad),其实是错误的,android手机大部分也是支持的,只是显示效果不一样,移动开发并不成熟,更多的还需要大家去实践来辨别真伪- - -w ...
- LeetCode——Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- c#万能视频播放器(附代码)
原文:c#万能视频播放器(附代码) c#万能视频播放器 本人之前很多的文章中均提到了使用libvlc为播放器内核制作的播放器,也许有些朋友对此感兴趣,于是我用c#写了一个调用libvlc api实现的 ...
- TODOList项目
[ 爱上Swift]十二期:TODOList项目 好久没有写Swift甚是想念,Swift,Xcode都比较稳定了写个程序熟悉一下,当然时间原因都是小Demo,废话不多说先上图. 下面是跑起来之后 ...
- 条件变量signal与unlock的顺序
编写同步队列时,有用到条件变量,对操作队列的线程进行同步.当队列为空时,允许get线程挂起,直到add线程向队列添加元素并通过唤醒条件变量,get线程继续向下运行.条件变量在多线程程序中用来实现“等待 ...
- C# 通讯网关开发
C# 通讯网关开发 楼主从12年毕业大部分时间一直从事于通讯网关的开发,刚刚学那会连C#是啥都不知道,就直接入手网关开发,前前后后到现在也算是弄了5.6个通讯协议,后来看到北风之神的socket框架和 ...
- Android手机外置SD卡(TF卡)的获取方法
Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此 ...
- 7.29 DFS总结
7.29 黄昏时刻 (一) 全排列 建模: 给了数字n 代表从1-n 个数全排列 思路: 1. 输入n,如果n值为‘0’,则退出程序 2. vis[i] 保存 是否对第i个数字进行访问 3. df ...
- 浅谈DevExpress<二>:设计一个完整界面(2)
下面来把剩下的工作做完,换肤功能昨天已近讨论过,今天就不重复了.首先建立三个全局变量,一个存放文件路径,一个存放数据,一个存放过滤条件. string DBFileName; DataView dat ...
- 定义 ICache 接口,以及实现默认的 ASP.NET 缓存机制
本文定义 ICache 接口,以及实现默认的 ASP.NET 缓存机制(即通过 System.Web.Caching.Cache)来缓存,将来也可以通过扩展,替换默认实现. 下面直接贴代码了: ICa ...