(零)操作系统基础

目录/p>

进程管理  

(1)应用程序如何运行与OS上的

(2)什么是进程

(3)进程控制

1)为什么要进行进程控制

2)控制做些啥事情

3)多进程并发运行

4)进程控制信息(PCB)

5)进程的运行状态

6)有关进程调度

8)进程通信 

9)进程间的关系

10)轻量级的进程 — 线程

内存管理

1)虚拟内存

1)虚拟内存的基本原理

2)虚拟内存机制的具体实现 

3)动态库的实现原理

4)共享内存

2)虚拟内存总结

 设备管理

(1)回顾计算机结构 

(2)常见的外部设备

(3)设备驱动程序

1)为什么叫要驱动程序

2)驱动程序到底是如何驱动外部设备

(4)驱动程序的种类

文件管理

(1)文件在磁盘上存储形态

(2)文件系统

1)作用:文件管理软件,计算机文件的管理者

2)文件大致分类

3)文件系统的管理结构:树形管理结构

4)文件系统与OS,与磁盘关系

5)以ext文件系统的管理格式为例

3)访问文件的过程

4)文件系统 与 磁盘驱动

5)文件系统简单总结


 

(零)操作系统基础

进程管理  

(1)应用程序如何运行与OS上的

(零)操作系统基础

 ·Os代码和应用程序代码都在内存中

          ·运行应用程序的代码时,PC取应用程序的指令,CPU运行应用程序代码

         ·应用程序调用OS提供的函数接口,让OS帮忙提供支持时,这是PC取OS得指令并运行,并去控制外设(硬件)工作,这样就是取得OS支持,总之OS充当了应用程序控制硬件设备的中间人。

 

(2)什么是进程

进程是由程序变换而来,介绍进程时,需要先从程序说起。

1)当程序没有运行时
                    
      当程序没有被运行时,该程序(可执行文件)只是存放在硬盘上的静态数据,与你写的word文件中的数据没有本质区别

                        
                        
2)进程就是运行中的程序
                            
      当程序运行起来后,进程是所有与“程序运行”有关的代码和数据的集合体,简单的理解就是“进程”就是行进中的程序。
                        
                       

                        
3)进程也有生有死
                    
            (a)开始运行为生,运行结束即为死。
            (b)程序好比人,进程好比人生,人活着时的一切就是人生,程序活着时所涉及的一切就是进程。

                        
      

4)进程应包含三部分内容
                    
             (a)应用程序本身的代码和数据,这一部分称为应用代码部分,习惯称为应用空间

             (b)应用程序调用OS函数时,所涉及的OS中的代码和数据,这一部分称为内核代码部分,习惯称为内核空间

             (c)OS记录的进程在运行时的各种管理信息 专门进行进程管理的叫PCB进程控制块

(零)操作系统基础   

(3)进程控制

1)为什么要进行进程控制

       在有OS的计算机上,应用程序必须在OS的支持下才能运行,换句话说,必须在OS的控制之下才能运行。

 

2)控制做些啥事情

      (a)分配内存空间,然后将程序调入内存并启动运行,运行起来后就变成了一个进程。

      (b)OS调度器对其进行调度

      (c)OS进行进程控制时,会负责记录进程各个方面的管理信息,这些控制(管理)信息都记录在了PCB中。

      (d)意外事件处理

      (e)当进程运行结束之后,回收内存空间、记录有各方面进程信息的PCB,

 

3)多进程并发运行

       在计算机上运行的绝不是只有一个进程,而是很多进程同时并发运行,进程在并发运行时
                    1)所有进程都是交替运行的,每个进程只运行一个ms级的时间片。                 
                    2)调度器会根据调度优先级算法,决定下一个时间片运行哪一个进程
                    3)从宏观上看,所有进程是同时并发运行的,但在微观上,在每个时刻,CPU只运行一个进程。

 

4)进程控制信息(PCB)

      我们说进程是在OS控制下运行的,OS会使用PCB管理各种进程信息,以Linux系统为例,PCB就是一个C结构体,该结构体名叫 task_struct,该结构体非常大,成员项达300个左右,用于记录该进程被OS控制运行时的各种管理信息。

     1)Linux系统的tasck_struct结构体 

           

(零)操作系统基础

     2)task_struct中的各种进程管理信息

            (a)进程信息

                    · 进程ID:用于唯一标识进程的编号,好比人的身份证号

                    · 程序名称:就是可执行文件的名字

                    · 可执行文件的格式:

                    · 进程时间:进程什么时候开始运行的

           (b)进程调度信息

                  · 进程运行状态:就绪态,执行态,等待态等

                  · 优先级:进程被调度的优先级,优先级高的会被优先被调度

                  · 调度标志:标记该进程是否被调度

                  · 时间片:运行时间片大小

            (c)文件信息:记录正在被进程操作文件的各种信息

            (d)内存信息:进程运行时所需内存的管理信息

            (e)休眠时间:比如当进程调用sleep函数,进程就会进入休眠。

 

 

5)进程的运行状态

       1)进程运行状态有哪些

                    (a)就绪态:表示进程准备就绪,随时等待被调度运行
                    (b)执行态:被调度运行,运行时占有CPU,运行的时间片到后让出CPU
                    (c)阻塞态:因为进程运行需要的某些条件的不满足,进程阻塞处于休眠状态
                    (d)终止态:进程结束,也就是程序运行结束,回收进程占用的内存资源

             

(零)操作系统基础

       2)进程状态间的切换

6)有关进程调度

          1)进程调度由调度器实现
          2)所有进程运行时,都包含就绪态、执行态、阻塞态、终止态这些状态,都会在这些状态之间来回切换           
          3)只有当进程进入执行态时,进程才会获得CPU的占有权 
          4)进程运行的时间片到后就会调度其它进程运行,每个时间片平均在10ms~20ms左右。
          

(零)操作系统基础

8)进程通信 

   本机进程间通信

                – 本机进程间通信的第三方 OS, 

                                            

(零)操作系统基础

 夸机进程间通信

                 其实就是网络通信,实现两台计算机上的程序之间的通信。

9)进程间的关系

   1)父子关系

   2)进程组关系

   3)会话期

(零)操作系统基础

10)轻量级的进程 — 线程

   1)进程存在的问题:进程切换很耗费时间

   2)进程问题的解决:线程

   3)线程由谁提供

             线程有两种提供方式,第一种则由操作系统提供,第二种以线程库方式提供,独立于OS之外。

             a)Linux:两种方式都有,不过常见的都是以独立于OS之外的线程库来提供。

             b)Win32:由OS提供

 

   4)与进程一样,线程也会参与调度

                   

(零)操作系统基础

   5)线程能够替代进程吗

            a)不能   因为线程是基于进程而存在,没有进程也无法无法实现

 

   6)进程与线程关系

            线程基于进程资源工作

                        资源(cpu和内存)以进程为单位进程分配的,因此进程被称为资源分配的最小单位

            线程的切换

                        进程内的线程切换时,不涉及进程间的切换   

            进程与线程各自的作用    

                        – 程序运行起来后就变成了进程,OS以进程为单位分配cpu、内存等计算机资源。
                        – 线程实现进程内部的多线任务

 

   7)进程和线程关系类比

 

(零)操作系统基础

 

 


内存管理

1)虚拟内存

1)虚拟内存的基本原理

a)原理图

(零)操作系统基础

(零)操作系统基础

(c)为什么称为虚拟内存

         CPU被欺骗了,它认为使用这个虚拟地址访问了某个内存,但是这个虚拟地址只是一个编号,这个虚拟地址对应的只是 一个虚拟的内存,实际上程序被分成两部分放在了内存上和外存上。

(d)虚拟内存机制为什么节省了内存    

          因为只加载了你要运行的那部分,其他的都在外存上,外存帮忙存了其他代码,相当于使用外存扩展了内存空间。

(e)虚拟内存机制为什么能够防止修改别人的程序空间

         自己的虚拟地址只映射了自己的物理内存空间和外存空爱,就算是程序员把地址写错了,但是错的也只是虚拟地址,由于  虚拟地址只映射了自己的空间,顶多也就把自己的空间给改了,不可能把别人的空间给改了。

2)虚拟内存机制的具体实现 

(a)将内存和程序分页

              

(零)操作系统基础

 

(b)加载程序,建立映射页表

               

(零)操作系统基础

                所有运行的进程都有一张自己页表  OS的虚拟内存机制就是使用每个进程的页表来管理这些虚拟页的。

  •                 1 加载肯定是有OS负责加载的
  •                 2 OS加载程序时候 需要一个辅助进程(该进程父进程)
  •                 3 程序被加载后成为进程 OS就会为该进程 开辟页表 (从父进程的页表复制过来 修改后得倒一张新页表)

 

(c)CPU通过“虚拟地址”取指并执行进程

 

(零)操作系统基础

虚拟地址/页大小(4K ) = 所在页号

 

(d)缺页异常处理

(零)操作系统基础

缺页中断: CPU取址运行 (内存没有在外存上    把所缺页导入内存 :(1 找空页导入   2替换掉以前的页))

                   CPU重新取址运行

 

3)动态库的实现原理

1)静态库和动态库

          静态库是在编译程序时就决定好了的,库代码已经被复制到了程序中,

          但是动态库不一样,程序使用这个动态库时,并没有将动态库代码复制到程序中,只是在程序中留下了一片空的虚拟地址作为接口,这些虚拟地址并不对应真实的指令。当我们的程序被加载到内存中运行时,才会动态的去加载动态库,因为动态库时共享的,因此动态库也被称为共享库。

 

2)动态库的实现

          动态库也叫共享库,核心是共享,因为动态库的实现需要虚拟内存机制的支持,

          如果是裸机的话,是没有OS,没有OS就没有虚拟内存机制,在裸机上只能使用静态库

(零)操作系统基础

 

3)程序中的动态库接口

        程序中使用了动态库的话,编译程序时,会预留一片虚拟地址。
        当程序运行起来后,这片虚拟地址会被映射到物理内存上的动态库,建立虚拟地址和动态库物理地址的对应关系。  
          

4)共享内存

不同进程共享了同一片空间后,一个往里方数据,另一个从里面取数据,就实现了通信。

与共享动态库的区别仅仅是,共享动态库时,共享空间里面放的是动态库的指令,供不同进程共享执行。
而共享内存仅仅只是一片空的共享空间,只是是用来通信用的。

2)虚拟内存总结

如下这张图是如何得到的

(零)操作系统基础

多进程是如何共享一个OS的:

(零)操作系统基础

应用空间对应的虚拟地址:用于访问应用代码。
内核空间对应的虚拟地址:用于映射到OS上,当应用代码调用OS的系统函数时,就会使用内核空间虚拟地址访问OS
使用虚拟地址,不管是访问应用代码,还是访问OS,虚拟地址都需要被转成物理地址,到实际的物理内存中去访问

 

CPU使用虚拟的地址运行每一个进程,CPU被虚拟地址欺骗后,CPU人为每一个进程都有一个自己的内存,这个欺骗CPU假内存,就称为虚拟内存。

CPU认为整个程序(进程)运行在独立的虚拟内存上,因此虚拟内存空间,也被称为进程空间。

 

(零)操作系统基础

虚拟内存就是通过虚拟内存机制,在物理内存和硬盘上,营造出来的一种假象


 设备管理

(1)回顾计算机结构 

(零)操作系统基础

(2)常见的外部设备

只要挂接在外设IO接口上的都是外部设备

按照用途分的话,大致分为三大类。
     (a)数据的传输:比如网卡,负责数据的发送和接收,即是输入也是输出设备
     (b)数据的存储:比如像磁盘,SSD(固态硬盘),既能读数据也能里写数据,所以即是输入也是输出设备。
     (c)数据的翻译:比如输入设备MIC,将输入的声音翻译为电信号的二进制数据。

(3)设备驱动程序

1)为什么叫要驱动程序

外部设备绝对不是连上就能用的,必须要有专门的程序来驱动才能工作,能够驱动外部设备工作的程序就是驱动程序。

                                                        

(零)操作系统基础

 

2)驱动程序到底是如何驱动外部设备

为了能够驱动外部设备工作,驱动程序关键要要两件事情

                    第一件:配置外设的工作模式
                    第二件:通过外设输入输出数据

(a)第一件:配置外部设备的工作模式

为什么要配置

         因为大多数外部设备都有很多种工作模式,驱动程序需要通过相应的配置,选择让设备工作在那种工作模式下

         如果不做配置的话,外部设备不知道该工作在什么模式下,是混乱的。

 

驱动程序是如何配置外部设备的呢

         通过相应的配置开关进行配置,这个配置开关就是“设备的配置寄存器”。

 

设备的配置寄存器

         就是外设工作模式的配置开关,是外设专用寄存器,与CPU内部的寄存器、cache、内存(DDR)一样,

         只是这些寄存器被做在了外部设备的内部,是专属于外设的专用小容量内存

         驱动程序向设备的配置寄存器中写入相应的配置数据,就可以配置好外部设备的工作模式。

 

·为什么向配置寄存器写入配置数据,就能配置好外设的工作模式

               

(零)操作系统基础

计算机中数据已电信号存在,向设备配置寄存器写入配置数据,其实就是将电信号导入配置寄存器,配置寄存器中
就把这个电信号锁存起来,这个电信号承载的是一个二进制数,所以就将电信号的二进制数据写入了配置寄存器中。

(b)第二件:输入/输出数据

配置好工作模式后,驱动程序就可以驱动设备工作了,此时需要用外设的“数据寄存器”。

          为什么需要数据寄存器呢br>           因为输入输出数据时,数据需要暂时存放在数据寄存器中,存数据时,存储的其实就是电信号。

·输入设备

输入设备有两种情况,
              第一种:直接得到就是二进制数据,比如像网卡和存储器,能够直接输入数据    
              第二种:需要经过传感器的翻译,比如像麦克风、摄像头,需要转为二进制电信号形式的数据。

         CPU执行输入设备驱动程序时,从输入设备的数据寄存器中取出数据,并将数据保存起来,专门进行数据处理的程序就可以处理这些输入的数据了。

          

(零)操作系统基础

本质就是数据的搬移(在指令的控制下 把电信号从一个地方捣鼓到另一个地方)

从设备数据寄存器搬移到—->驱动程序缓存里面搬移—->OS内核缓存—->C库缓存—–>应用缓存

·输出设备

输入设备有两种情况(同上)

CPU执行输出设备的驱动程序时,会将电信号形式的数据写到设备的数据寄存器中,输出设备的

              

(零)操作系统基础

(4)驱动程序的种类

分为两种,第一种是裸机驱动程序,第二种是基于OS的驱动程序。

(a)裸机驱动程序的特点

裸机程序大致分为两部分,第一部分为业务逻辑代码,第二部分为驱动代码

            – 业务逻辑代码:专门负责数据的处理,比如计算1+2结果

            – 驱动代码:专门负责驱动外设,实现数据的输入输出,比如控制键盘输入1和2,控制显示屏显示3

                        

(零)操作系统基础

            

(零)操作系统基础

(b)基于OS的驱动程序 

                                

(零)操作系统基础

文件管理

(1)文件在磁盘上存储形态

文件存储在磁盘上时,分别要存储两部分的内容,第一部分是文件属性信息,第二部分是文件中存放的数据,属性信息和数据是分开存放的.

我们看见的图形化的文件,只是图形化给人看的一个文件符号而已,存储在磁盘上的文件信息才是真实的文件存在形态。

(零)操作系统基础

 

1)第一部分,文件属性信息 

表现文件的独特性质,是区别文件用的身份信息,文件的属性信息有文件名、文件类型、文件输在位置等信息,任何计算机上的文件的属性,80%都是相同

文件属性都包含,文件名称、文件类型、文件大小、文件位置、创建/修改时间、文件读写权限、打开方式等。

 

2)第二部分,文件数据:就是存放在文件中的数据。

 

3)文件属性与文件数据 

(a)并不是所有的文件都有数据

                       第一个:所有的文件一定都有属性信息  

                  &

来源:Try1024

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月18日
下一篇 2019年10月18日

相关推荐