Linus 说, Kernel is a collections of code to help run user program.
That's not ture.
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。并不需要一个操作系统。如果嵌入式程序需要文件系统,在C库里有何尝不能实现呢?
我仅认为,kernel is a trusted library to share hardware. 内核就是用来共享硬件的,我谨认为,内核就是一个 multiplexer.
进程: 是用来共享主存储器的。内核是 RAM 的 multiplexer. 线程: 是用来共享CPU的。内核是 CPU 的 multiplexer. socket:是用来共享网卡的。内核是 网卡 的 multiplexer. 文件系统:是用来共享外部存储器的。内核是 disks/blockdevice 的 multiplexer. . . . . . .
需要在内核里实现的功能,必定是需要内核去 multiplex 的。而不需要 multiplex 的功能,必须是不用在内核里实现的。
例1: 打印机驱动,从来没有哪个系统是在内核实现的。 Windows下,打印机驱动是 GDI 调用到 PCL(Printer Control Language)的解释器,是在非内核实现的。 UNIX/Linux下,打印机驱动是 PS -> PCL 的翻译器。顾名称为 cups-filter . 最终,PCL命令才需要内核的 USB驱动(或者并口etc)将命令发送给打印机。而 CUPS 利用了 libusb 连这点都不需要内核操心了。
例2: 拨号连接。 拨号连接是在用户层( pppd )实现的。内核创建一个 ppp0 ( ppp? 设备) 虚拟设备,然后内部的 socket 代码就 multplex 这个设备为别的程序提供网络功能。 ppp0 设备是个虚拟设备,其数据最终全部转给了 pppd , 由 pppd 实现和 “猫” 的通信。
但是 。。。。。。。
以上都是我的铺垫。因为我最终要讲的东西是:
尼玛图形界面啥时候能在内核实现?!
图形界面分成3个子系统: 窗口管理 窗口内容渲染 字体管理和文字渲染
字体管理是字体的 multplex , 但是文件系统已经为我们做到了multplex字体文件,所以在用户空间实现没什么问题。 文字的渲染归根结底还是属于渲染功能。
硬件加速的渲染(现在谁还想用 CPU纯软件渲染啊)是 GPU 的 multiplex . 窗口是 “屏幕空间” 的 multiplex,窗口伴随者键盘鼠标设备,这是输入设备的 multiplex .
这样 3 个 multiplex 就需要实现: GPU multiplex Screan Space Multiplex HID multiplex (不是啥输入设备都行的,是要 Human Input Device,人体输入设备)
这3样东西的 multiplex , 尼玛为何不是在内核做的?! 为何?!?
要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!!
绝对是内核偷懒 绝对是内核偷懒 绝对是内核偷懒。。。。。。
尼玛差点忘记,声卡也是要 multiplex 的,尼玛从古时候的 OSS 到进化的ALSA 现在都没支持内核混音!!!!还得靠学Xserver的 pulseaudio 来混音。 有内核混音的 OSSv4 尼玛就是不肯合并。有木有有木有有木有!
在 2012年9月8日 下午5:59,microcai microcai@fedoraproject.org 写道:
Linus 说, Kernel is a collections of code to help run user program.
That's not ture.
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。并不需要一个操作系统。如果嵌入式程序需要文件系统,在C库里有何尝不能实现呢?
我仅认为,kernel is a trusted library to share hardware. 内核就是用来共享硬件的,我谨认为,内核就是一个 multiplexer.
进程: 是用来共享主存储器的。内核是 RAM 的 multiplexer. 线程: 是用来共享CPU的。内核是 CPU 的 multiplexer. socket:是用来共享网卡的。内核是 网卡 的 multiplexer. 文件系统:是用来共享外部存储器的。内核是 disks/blockdevice 的 multiplexer. . . . . . .
需要在内核里实现的功能,必定是需要内核去 multiplex 的。而不需要 multiplex 的功能,必须是不用在内核里实现的。
例1: 打印机驱动,从来没有哪个系统是在内核实现的。 Windows下,打印机驱动是 GDI 调用到 PCL(Printer Control Language)的解释器,是在非内核实现的。 UNIX/Linux下,打印机驱动是 PS -> PCL 的翻译器。顾名称为 cups-filter . 最终,PCL命令才需要内核的 USB驱动(或者并口etc)将命令发送给打印机。而 CUPS 利用了 libusb 连这点都不需要内核操心了。
打印机虽然是共享的,但是不是“同时共享”的。打印是要排队的。
例2: 拨号连接。 拨号连接是在用户层( pppd )实现的。内核创建一个 ppp0 ( ppp? 设备) 虚拟设备,然后内部的 socket 代码就 multplex 这个设备为别的程序提供网络功能。 ppp0 设备是个虚拟设备,其数据最终全部转给了 pppd , 由 pppd 实现和 “猫” 的通信。
但是 。。。。。。。
以上都是我的铺垫。因为我最终要讲的东西是:
尼玛图形界面啥时候能在内核实现?!
图形界面分成3个子系统: 窗口管理 窗口内容渲染 字体管理和文字渲染
字体管理是字体的 multplex , 但是文件系统已经为我们做到了multplex字体文件,所以在用户空间实现没什么问题。 文字的渲染归根结底还是属于渲染功能。
硬件加速的渲染(现在谁还想用 CPU纯软件渲染啊)是 GPU 的 multiplex . 窗口是 “屏幕空间” 的 multiplex,窗口伴随者键盘鼠标设备,这是输入设备的 multiplex .
这样 3 个 multiplex 就需要实现: GPU multiplex Screan Space Multiplex HID multiplex (不是啥输入设备都行的,是要 Human Input Device,人体输入设备)
这3样东西的 multiplex , 尼玛为何不是在内核做的?! 为何?!?
要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!!
绝对是内核偷懒 绝对是内核偷懒 绝对是内核偷懒。。。。。。
尼玛差点忘记,声卡也是要 multiplex 的,尼玛从古时候的 OSS 到进化的ALSA 现在都没支持内核混音!!!!还得靠学Xserver的 pulseaudio 来混音。 有内核混音的 OSSv4 尼玛就是不肯合并。有木有有木有有木有!
我记得C库应该是以操作系统提供的API为基础的吧,要是C库完全都是自己写底层代码可移植性也太差了
在 2012年9月8日 下午6:05,Mike Manilone crtmike@gmx.us写道:
On 2012/09/08 17:59, microcai wrote:
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。**并不需要一个操作系统。
只用 C 是肯定不行的……你的程序在 PC 架构下就是一� OS(不�就是不太全而已)。
Fedora中文�件列表:https://admin.**fedoraproject.org/mailman/**listinfo/chinesehttps://admin.fedoraproject.org/mailman/listinfo/chinese
其實嵌入式系統有自己的 sys lib
On 2012/09/08 19:29, 林孟潇 wrote:
我记得C库应该是以操作系统提供的API为基础的吧,要是C库完全都是自己写底层代码可移植性也太差了
在 2012年9月8日 下午6:05,Mike Manilone crtmike@gmx.us写道:
On 2012/09/08 17:59, microcai wrote:
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。**并不需要一个操作系统。
只用 C 是肯定不行的……你的程序在 PC 架构下就是一個 OS(不過就是不太全而已)。
Fedora中文郵件列表:https://admin.**fedoraproject.org/mailman/**listinfo/chinesehttps://admin.fedoraproject.org/mailman/listinfo/chinese
-- Fedora中文郵件列表:https://admin.fedoraproject.org/mailman/listinfo/chinese
On Saturday, September 08, 2012 05:59:09 PM microcai wrote:
Linus 说, Kernel is a collections of code to help run user program.
That's not ture.
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。并不需要一个操作系统。如果嵌入式程序需要文件系统,在C库里有何尝不能实现呢?
我仅认为,kernel is a trusted library to share hardware. 内核就是用来共享硬件的,我谨认为,内核就是一个 multiplexer.
进程: 是用来共享主存储器的。内核是 RAM 的 multiplexer. 线程: 是用来共享CPU的。内核是 CPU 的 multiplexer. socket:是用来共享网卡的。内核是 网卡 的 multiplexer. 文件系统:是用来共享外部存储器的。内核是 disks/blockdevice 的 multiplexer. . . . . . .
需要在内核里实现的功能,必定是需要内核去 multiplex 的。而不需要 multiplex 的功能,必须是不用在内核里实现的。
例1: 打印机驱动,从来没有哪个系统是在内核实现的。 Windows下,打印机驱动是 GDI 调用到 PCL(Printer Control Language)的解释器,是在非内核实现的。 UNIX/Linux下,打印机驱动是 PS -> PCL 的翻译器。顾名称为 cups-filter . 最终,PCL命令才需要内核的 USB驱动(或者并口etc)将命令发送给打印机。而 CUPS 利用了 libusb 连这点都不需要内核操心了。
例2: 拨号连接。 拨号连接是在用户层( pppd )实现的。内核创建一个 ppp0 ( ppp? 设备) 虚拟设备,然后内部的 socket 代码就 multplex 这个设备为别的程序提供网络功能。 ppp0 设备是个虚拟设备,其数据最终全部转给了 pppd , 由 pppd 实现和 “猫” 的通信。
但是 。。。。。。。
以上都是我的铺垫。因为我最终要讲的东西是:
尼玛图形界面啥时候能在内核实现?!
图形界面分成3个子系统: 窗口管理 窗口内容渲染 字体管理和文字渲染
字体管理是字体的 multplex , 但是文件系统已经为我们做到了multplex字体文件,所以在用户空间实现没什么问题。 文字的渲染归根结底还是属于渲染功能。
硬件加速的渲染(现在谁还想用 CPU纯软件渲染啊)是 GPU 的 multiplex . 窗口是 “屏幕空间” 的 multiplex,窗口伴随者键盘鼠标设备,这是输入设备的 multiplex .
这样 3 个 multiplex 就需要实现: GPU multiplex Screan Space Multiplex HID multiplex (不是啥输入设备都行的,是要 Human Input Device,人体输入设备)
这3样东西的 multiplex , 尼玛为何不是在内核做的?! 为何?!?
要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!! 要搞个 Xserver !!!!
绝对是内核偷懒 绝对是内核偷懒 绝对是内核偷懒。。。。。。
尼玛差点忘记,声卡也是要 multiplex 的,尼玛从古时候的 OSS 到进化的ALSA 现在都没支持内核混音!!!!还得靠学Xserver的 pulseaudio 来混音。 有内核混音的 OSSv4 尼玛就是不肯合并。有木有有木有有木有! -- Fedora中文郵件列表:https://admin.fedoraproject.org/mailman/listinfo/chinese
在讨论这些之前需要为kernel定义一个范围。想必你也认同不是什么东西都往kernel里面加。如何理解help,如何理解user program。这些都需要 从kernel的角度出来来考虑。
这个就是內核...
2012/9/8 microcai microcai@fedoraproject.org:
开发过嵌入式的童鞋都知道,编译器提供的C库就已经能做到了。并不需要一个操作系统。如果嵌 入式程序需要文件系统,在C库里有何尝不能实现呢?
chinese@lists.fedoraproject.org