标题:学习操作系统心得
只看楼主
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
 问题点数:0 回复次数:10 
学习操作系统心得
本帖请大家不要回帖 我有空还将不定期将我学习的心得发表 谢谢
学习操作系统心得
一、资源管理
计算机操作系统第一项任务是管理计算机资源,资源就是计算机硬件提供的功能,
(一)存储器管理    
      1、内存管理:管理的目标是编程者和使用者不用管内存的大小限制,只需按需要的功能编程即可。
         pc机的内存是一组按顺序编号的存储单元,编号就是它们的地址,每个存储单元能存放0-255之间的任意一个数。这些数可以代表指令和数据或地址。
    程序执行时是按地址顺序执行或指令操纵的顺序执行的,先取指令再操纵数据,
            如    复制5号单元的数据到6号单元这是条指令,(中国语法)
                这条指令分3部分:移动命令  地址  数据  
                用汇编语言就是:MOV 6,5     6是目标地址  5是源地址(英语语法)
                用c语言就是:   a=b;        a代表6号目标地址 b代表5号源地址(英语语法)
            注:    由于c是高级语言所以地址的编号必须是符号化的不能以数字标示地址。
                由于这两种计算机语言都是英语国家发明的所以和中国的语法不一致 他们是目标在前 源在后。
                
        
    现代pc内存管理是先分段,再在段内分页的方法。
    分段是为了方便编程 上面的移动指令 MOV 6,5占用了3个连续的地址不可分割,但数据却可放在内存中的任意位置,只要改变指令中的地址就可以操纵了,
    将数据集中起来更便于编程,所以段就可以分为程序代码段和数据段,段的长度是不一样的。管理段是就需要段的索引表。
            
            pc机中提供了两种段表:全局段表 用于存放每个程序的起始段的位置
                        局部段表 用于存放每个程序中每个段的位置
            
    分页是为了有效利用内存资源,由于硬件内存资源有限,如果所有在内存中代码段+数据段超过了内存的大小怎么办呢?答案是将一部分暂时没用的程序代码和数据先存储
         在外 部硬盘存储器上,需用时再读入内存,分页就是为此才使用的,页的长度是固定的,可以用页表来管理,页记录除了程序代码或数据外还标识了页的状态,操作系统
         根据页状态来决定页在内存中的去留。

      2 、外部存储器管理:目标是按文件来读取数据即可。
                   典型的外部存储器:硬盘,U盘,光盘等
                   这个简单用,跟内存分页差不多的方式用固定长度的单位来存储数据就行了。文件索引表就可管理。
(二)输入输出管理
    pc机输入输出是通过一组按顺序编号的接口进行的称为I/O端口共有65535个接口 呵呵够多的吧,不同功能的设备分别连接一个接口或多个接口,通过不同的接口协议于
         pc机交流。
        
    pc机的输入输出指令就两条 IN OUT  输入 输出 很简单是吧! 但还有个概念就不容易理解了 那就是计算机革命性的概念 中断。
        
    中断:pc机正在执行程序 你想与他交流就会用到中断,比如鼠标光标为什么可以在屏幕上随意移动,键盘为什么你一敲键屏幕就会显示字母,这都是因为有中断的原因。
          如:鼠标在移动时每1/30秒就向机器发送一个中断,机器就停下正在执行的程序来响应它,将屏幕上的光标移动一段距离然后机器又回去执行它的程序去了。
                 当然输入输出这两条指令在中断过程中就用上了。
二、机器运行管理
    计算机操作系统第二项任务是管理计算机运行。

        (一)任务调度管理:pc机是分级分时的任务调度方式
              分级是为了分出任务的优先级,比如计时器到时间了就必须先执行计时功能,否则时间过了计时就没意义了。
              分时是为了让任务按时间片段轮流执行,这样可以让任务接近同时执行的情况。        
    (二)资源调度管理:
                        pc机是优先级或分时的资源调度方式
                             对于像打印机这种资源必须以先到先打印的方式来管理,后到的就只有等。
                             像内存这种资源就可以用按任务调度时的时间片来管理使用。
          (三)安全管理:这个太复杂还要学习

[[it] 本帖最后由 zn123717885 于 2008-10-21 14:59 编辑 [/it]]
搜索更多相关主题的帖子: 心得 学习 
2008-10-18 16:10
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
外部存储器管理学习心得
在操作系统管理中最简单的管理要属外部存储器的管理,
管理的目的在于编程者和使用者按文件的方式来使用其中的数据。
较早使用的软盘现在已经退出历史舞台了 现在最典型的外部存储器是硬盘,U盘,光盘,
而硬盘是其中最普遍的外存。
不管是代码还是数据对硬盘来说都是数据。
文件的数据结构:文件信息  文件数据
    文件信息包括的内容:文件名 文件类型 文件尺寸 其他
硬盘存数据的结构是:硬盘内有很多大小一致的存储单位,一个单位能存储一定量的数据,这些单位也是按顺序编了号的,
当文件的数据大于一个单位的存储量时就用多个单位来存储。
那么怎样在硬盘那么多存储单位中找文件呢?这就要用到一个文件定位索引表,这个表记录了文件在硬盘中的位置。
为了管理文件方便还要有目录索引表,硬盘分区表等。
这些表是事先定好了放在硬盘的固定位置,通过这些表就可以让硬盘达到我们的目标即使用者不必关心硬盘的结构
只需用文件的数据结构操作硬盘。
操作系统的任务就是将使用者下达的操作文件命令转换成操作硬盘硬件的指令。

注:早期开发的操作系统大都以磁盘管理为中心,命名都是磁盘命名,如微软的 DOS 就是磁盘操作系统的英文缩写。
    后来微软的操作系统开发中心转向人机界面就命名为Windows。
    现在又改名叫Vista 意思是远景,其中的内涵就只有去体会了

[[it] 本帖最后由 zn123717885 于 2008-10-19 14:01 编辑 [/it]]
2008-10-19 13:39
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
那么磁盘管理操作系统该做些什么工作呢?我们来分析分析。
用户的磁盘操作要分为3部走:1、建立文件于用户的连接 2、用户使用文件中的数据 3、关闭用户与文件的连接
1、建立连接(打开文件):用户提供文件名 位置 操作系统返回给用户一个代码 这个代码指向文件
2、使用数据(读写数据):用户用代码访问文件中的数据
3、关闭连接(关闭文件):销毁代码
计算机界为这个代码取了个晦涩的名字句柄,
意思是将文件看成一个句子,可能是因为文学中的句子和文件在结构上是基本一致的
都是顺序排列,可变内容和长度,柄就是操纵杆的意思,借用了现实生活中的概念。

还有一些特殊如新建、删除文件以及改变文件属性等情况比较简单就不分析了。

从上面的分析看来操作系统(OS)的任务就要提供给用户一组命令
如 新建文件,打开文件,读写文件,关闭文件,删除文件,改变文件属性。
用户只需用这些命令 + 一些参数就可操纵硬盘上的文件了。

[[it] 本帖最后由 zn123717885 于 2008-10-19 16:37 编辑 [/it]]
2008-10-19 15:46
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
为了建立用户与文件的连接 OS 应在内存中建立一个文件句柄索引表 并且还应给每个打开的文件建一个缓冲内存区
文件句柄索引表提供用句柄 磁盘文件 文件缓冲区三者的联系信息。
文件缓冲区提供文件数据缓冲,用以让内存于硬盘进行数据块传送。
注:数据块是指批量数据,用它的原因是磁盘数据传送速度根本上内存的数据使用速度,所以当访问磁盘文件时将
要用的数据和它前后的一批数据一起送如文件缓冲,如果用户在需访问磁盘文件时,先看这个缓冲区中有没有,没有
才到磁盘中读入,读入时有又和前面的方法一样,这样读写磁盘的几率就降低了也可延长硬盘寿命。

关于缓冲区的大小问题:一般OS提供的缓冲区大小只能满足一般文件的应用,对于大量数据操作我认为应该自己在
编写程序中由程序提供和管理内存缓冲区,如图像处理软件photoshop 一个psd文件就几十兆甚至上百兆上G,用户拖动一下
图片就得大量的数据运算,如果都得到磁盘去读数据岂不等得头发都白了图都还没动。我以前是做效果图的深有体会。
photoshop 的选项中专门有个选项让用户设置缓冲内存区占机器物理内存的百分比。

甚至photoshop 还自己在磁盘上建立了个磁盘缓冲文件 在图形数据超过它提供的内存缓冲区时将部分数据移动到磁盘去
这已经是在做os该做的事了

[[it] 本帖最后由 zn123717885 于 2008-10-19 17:47 编辑 [/it]]
2008-10-19 17:03
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
内存管理心得
内存管理就我觉的应该是计算机中最复杂最难的工作,因为它不但是存储器,还是整个计算机的中心,其他所有资源都在为它服务,
如:外部存储器不过是内存的杂物箱,平时不用或很少使用的都放在外存中
    IO口是内存的传感器接口,好比人的视觉,嗅觉,听觉,触觉,发声等与大脑的接口
    运算单元和控制器单元也不过是在为它打工而已,
它就像老板一样把原材料送出去,等加工好后又收回来。呵呵 螳螂捕蝉黄雀在后,操作系统又是内存的老板,人又是操作系统的老板,某些人又是一些人的老板.....

操作系统是怎样管理内存呢?
PC机中处于最底层的操作系统应该算是BIOS(基本输入输出系统),它管理内存的方法是随便用,即基本放任自流,只提供一些硬件资源接口命令而已
甚至自己都可以任由用户程序改动,表现出大无畏的共产主意精神,唯一的一点自私就是容身的那点地盘你不能动,不能把它赶出内存。
BIOS是pc机生产商生产pc机时固化在内存中用于启动计算机的程序 占用了内存中固定的地址 用户程序不能用这部分地址的内存。

这里澄清一点 BIOS 并不是计算机必须的,这是pc机设计时加的,机器启动后从BIOS程序的起始地址开始执行
单片机就没有BIOS 所有程序都由用户编写,机器启动后就从地址0开始执行程序
2008-10-21 11:33
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
BIOS程序执行完后就干一件事 从设定好的第一个启动的外部存储器中的的第一个单元去读数据
并将它们放在内存的固定位置,然后BIOS用一条JUMP指令(跳指令)将程序的执行地址跳到这个固定位置的起始位置开始执行程序
这句话元有点长不好理解 我们分开来说
1、第一个启动的外部存储器 就是所谓的启动盘 如硬盘启动,u盘启动,光盘启动。
2、第一个单元就是就是外存的标号为0的数据存储单元,这个单元里存放的数据被称为操作系统引导程序

从这以后整个计算机就归用户的操作系统管理了,呵呵现在绝大部分pc机都归微软管
2008-10-21 12:07
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
计算机内存地址是按顺序排好的 访问内存里存储的数据就得用地址去访问。
计算机内存地址的编址方法现在地球上好像就两种
1 冯.诺依曼法:将程序代码和数据一起放在统一编址内存里
2 哈弗法:将它们分开放在两个分别编址的内存里 即程序地址是程序的地址  数据是数据的地址
Pc机是冯.诺依曼法,不过哈弗法好像跟先进,现在很多高级计算机在采用,甚至单片机里高级的也用哈弗法,不过资料较少,高级就是高级,香钵钵嘛。

比BIOS高级一点的操作系统最有名的就是微软的DOS 他的内存管理方法也给BIOS差不多,随便用,甚至可以将它赶出内存,所以dos是很脆弱的。
2008-10-21 13:04
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
IBM当初设计pc机时用了intel的8086CPU 只有20根地址引脚只能访问1M的内存 需要20位的二进制地址编址,但内存中一个地址单元存8位二进制 如果用3个单元来存储地址又多了4位,intel的设计者就想了个办法用4个单元就存下了20位地址,这就是段加偏移的方法,
4个单元中2个存储段地址,2个存储偏移地址,实际地址是先将段地址16位左移4位 这样低4位就为0
再与偏移地址相加。这个方法使得编程复杂化,直接使跳转命令分化成两个 远跳和近跳
远跳命令必须提供段地址和偏移地址
近跳命令就只需提供偏移地址
注:这个分段和程序分段是不同的概念 程序分段是以编程方便为目的,这个段是硬件设计的问题
    我刚学计算机编程时就是没分清此段非彼段,走了不少弯路啊,

[[it] 本帖最后由 zn123717885 于 2008-10-21 14:30 编辑 [/it]]
2008-10-21 13:48
zn123717885
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-10-18
得分:0 
其他类型的计算机接触的少,可能应该没有pc机这个分段机制,至少我学单片机时就没有,单片机编程真是愉快啊,而且学起也快,10天就可上手做东西,其实我觉得学计算机专业,硬件应该先从单片机学起走。现在抄的很热的嵌入式系统就是单片机系统,而且单片机在现代生活中无处不在,如手机 洗衣机,冰箱,汽车,打印机等……,价格也便宜,才几元钱一个芯片,pc的芯片便宜的都得1-2百

[[it] 本帖最后由 zn123717885 于 2008-10-21 14:54 编辑 [/it]]
2008-10-21 14:53
珍珍
Rank: 1
来 自:广东
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-10-13
得分:0 
2008-10-27 09:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-239041-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061207 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved