内核究竟是什么?(新手)

guaiwei 2004-12-15 02:07:04
小弟正在开始学习操作系统的内核.有一些问题老是不明白,所谓的内核究竟是什么呢??
在minix 设计一书中说到内存管理器是在内核之外的,那么放在外面和放在里面的区别标志是什么呢?
如果我现在在linux下面编写了一段程序,操作系统帮我完成了一些什么功能呢??
还有就是我在linux下面写了一段向显存输入字符让显示器显式的汇编代码,不能运行,操作系统是怎么样控制不能运行这些程序的呢??
请大侠指点迷津,小弟先谢过了
...全文
297 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guaiwei 2004-12-16
  • 打赏
  • 举报
回复
谢谢大家的热心指教,小弟有所明白了。分级的方法就是说如果我现在在Linux下面去运行一个直接读写内存的汇编程序是肯定不行的,因为我的程序跑在linux这个想对底层的程序只上,由它负责我的行动的调入,它把我的cpu运行级别设在了3级,那么当cpu执行这些i/o读写指令的时候便会报错,如果我要进行i/o操作就只能调用操作系统提供的调用。是这样的把
jsblcg 2004-12-15
  • 打赏
  • 举报
回复
前面几位说的不错,我补充一下。
这要看你的设计思想了,除了中断管理、虚拟内存管理、设备管理等必须放在内核之外,有许多部分既可以放在内核,也可以放在内核之外。例如图形界面就是一个例子,Windows将其做在内核,而Unix使用一个服务器程序(就是著名的X Windows系统)实现,不属于系统内核。
目前的系统设计均遵循微内核机构,内核尽量小(容易移植调制安全稳定等),但出于性能考虑,也需要做些折中。Windows就是如此,它的内核是主要是HAL.DLL和ntoskrnl.dll等模块,很小,但出于图形性能考虑,图形部分也加入了内核。
xwdd129 2004-12-15
  • 打赏
  • 举报
回复
呵呵,问题简单,回答经典!!
kokblack 2004-12-15
  • 打赏
  • 举报
回复
转贴:
intel x86 架构的 CPU 分为好几个运行级别,从 0--3 , 0 为最高级别, 3 为最低级别
针对不同的级别,有很多的限制,比如说传统的 in ,out 指令,就是端口的输入输出指令,在 0 级下是可以用的,但在 3 级下就不能用,你用就产生陷井,告诉你出错了,当然限制还有很多了,不只是这一点

操作系统下是利用这个特点,当操作系统自己的代码运行时, CPU 就切成 0 级,当用户的程序运行是就只让它在 3 级运行,这样如果用户的程序想做什么破坏系统的事情的话,也没办法做到

当然,低级别的程序是没法把自己升到高级别的,也就是说 用户程序运行在 3 级,他想把自己变成 0 级自己是做不到的,除非是操作系统帮忙...... 打个比方,版主 可以删除你的贴子,你却不能删除 版主 的贴子 ,当然你也没法让自己变成 版主 ,除非 版主 把你升为 版主(或是系统有 bug ).....

利用这个特性,操作系统就可以控制所有的程序的运行,确保系统的安全了. 平时把操作系统运行时的级别就叫内核态(因为是操作系统内核运行时的状态),而且普通用户程序运行时的那个级别叫用户态...

当操作系统刚引导时, CPU 处于实模式,这时就相当于是 0 级,于是操作系统就自动得到最高权限,然后切到保护模式时就是 0 级,这时操作系统就占了先机,成为了最高级别的运行者,由于你的程序都是由操作系统来加载的,所以当它把你加载上来后,就把你的运行状态设为 3 级,即最低级,然后才让你运行,所以没办法,你只能在最低级运行了,因为没办法把自己从低级上升到高级~~~~~~~~ 打个比方, 这个论坛是由 版主 创立的,当时创立时就他一个用户,所以它就自然取得了最高权限了,即 版主 运行在 0 级(内核态),然后他再让我们注册自己的账号,但是设置的权限是普通用户,所以我们一注册就只能是普通用户,即我们只能运行在 3 级(用户级),我们没有更多的权限,所以我们只能任由 版主 "蹂躏" 了,看你不爽就删除你的贴子,踢你下线,加你进黑名单,永久封你的IP之类的,你除了发发牢骚之外也是无可奈何了, 这就是操作系统在 内核 态可以管理用户程序,杀死用户程序的原因了~~~~~
ljhcnljh 2004-12-15
  • 打赏
  • 举报
回复
学习,我喜欢
VxD1 2004-12-15
  • 打赏
  • 举报
回复
操作系统放在第0级,一般的程序放在第3级。
放在0级的代码能访问放在第3级的数据,放在第3级的不能访问第0级的数据。
如果你写一段程序,运行这个程序,操作系统就帮你的程序加载,然后设置一些环境,然后把控制转移到你的程序中。你的程序是怎么不能运行的?
xxiaoran 2004-12-15
  • 打赏
  • 举报
回复
ding...

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧