计算机基础知识的学习中,操作系统则是重中之重。继对微机原理和计算机组成原理的基础知识了解和学习后,对硬件和基础原理的理论有了初步的了解,结合在所在公司的项目中开发应用的经历和体会,进行了操作系统的学习,发现操作系统其实是很有意思的,把个人学习操作系统的体会归纳为以下内容交流学习(只限于我目前阶段的学习,因为对于操作系统的学习根据工作环境要求和个人兴趣可以有不断的深入学习和探索):

一.学习体会

操作系统的学习,不限于需要从逻辑层面来理解其中的知识内容,初期学习个人感觉最难的在于没有形成对操作系统“角色定位”和大体的知识框架时,陷入具体的知识点,进度非常缓慢,感觉晦涩的同时会失去方向感。所以一方面,首先需要有微机原理和组成原理的了解学习,最好也有应用开发经验,软件和硬件两方面的认知;另一方面,不能陷入具体某一个知识点裹足不前,记得在看几种不同方式的内存管理方式时,先啃页面内存管理,艰难过完,又出来一个段式内存管理,就觉得愈发艰难,当时觉得太多太难了,有点打击到积极性(可怕的是几个月之后已经不太记得内存管理的细节知识了),可以先继续往下看,拘泥于细节不可取。

二. 主要功能

学习基础知识,一方面有助于了解计算机基础原理,不至于在编程时,只使用高级语言以及第三方库所封装的功能,遇到技术更新,又再进行一系列的机械记忆,并且所做的技术工作不会有层次上的突破,这对于学习进步益处不大。另一方面,可以借鉴这些成熟的机制在解决问题中的一些思路,学的知识一段时间若不使用,很快就会忘记其中的内容,尤其是细节内容,但是学习过程中的体会和大致的知识框架不会忘记的。以下是梳理出来的进程管理部分知识点:

● 进程的概念:可描述程序的执行过程且能用来共享资源的基本单位。进程是操作系统学习的一个核心概念。

● 概念:进程快照:Core Image 代表进程在某一特定时刻的状态。

● 概念:进程核:Core 进程所占有的所有的资源(eg: 包含内存,内核数据结构和资源)。

● 进程的产生与消失:

系统初始化时,会有多个进程产生,作为系统正常运行所需。之后用户启动程序,系统也可将执行文件创立为一个进程。并且用户可以在编程时通过系统调用,CreateProcess生成新的进程;进程的消失则有寿终(运行完成而退出)、自杀(因错误自行退出)、他杀(被其他进程强行“杀死”)、处决(因异常强行终结)四种情况。在编程过程中,应当追求两两种进程结束方式。

● 进程的状态与状态转换:

以下归纳为三种状态与6种/4种转换。状态为执行态、阻塞态、就绪态。状态之间的转换则是三种状态之间两两互相转换,排列组合一下,就是6种情况,就绪态到阻塞态以及阻塞态到执行态,因为操作系统在调度时不会在阻塞队列中挑选,并且就绪态的线程因为没有执行也不会进入到阻塞状态,除去此两种,则是4种转换。         

● 效率问题:

多道编程的极限,为一个临界点,到达这个临界点,进程数量的增加,将不会带来效率的提升。

● 进程控制块:

windows是使用系统调用来完成进程的创建,就是调用CreateProcess,Unix为先fork再exec,此为进程的创建。在进程创建过程中,首先分配进程控制块,(也包括其他初始化机器寄存器、初始化页表、将程序代码从磁盘读入内存,将处理器状态设置为“用户态”,设置程序计数器)。

内核空间含有进程表,进程可由操作系统通过进程控制块来进行管理,进程控制块(Process Control Block)存放包括寄存器、程序计数器、状态字、栈指针、优先级、进程ID、信号、创立时间、所耗CPU时间等等。进程表中包括进程基本信息指针,也包括进程家族树指针,子进程、父进程、孙子进程、祖父进程,及其其他需要的信息指针。实际情况是不同的操作系统维护的进程资料不尽相同,不同的商业系统的内核教程列有更为详细的信息,不过基本的所需信息基本包含。

进程管理的主要目的。各个程序均有机会执行,为公平;任何程序不能无休止的阻挠其他程序的正常执行,为非阻塞;程序对于资源的利用需要程序设定合理的优先级。

● 线程

各线程拥有同样的程序文本,但是线程执行时的上下文不一致。线程为一个进程中的执行序列,一个进程可拥有多个执行序列。便可实现进程级别并发,由此出现线程间通信,线程间同步的需要解决的问题。

● 常见通信方式:

管道:一种双半工的通信方式,数据只能单向流动,且只在具有亲缘关系进程间使用。

有名管道FIFO:同为双半工通信方式,但可允许无亲缘关系进程间的通信。

消息队列MessageQueue:由消息的链表,存放在内核中并由消息队列标识符标识,消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

共享存储ShareMemory:共享内存为映射一段能被其他进程所访问的内存,共享内存由一个进程创立,但多个进程都可以访问。

信号量Semaphore:信号量是一个计数器,可控制多个进程对共享资源的访问。作为一种锁机制,防止某进程正在访问共享资源时,其他进程也可访问该进程。因此。主要作为进程间以及同一进程内不同线程之间的同步手段。

套接字Socket:与其他通信机制不同在于,可用于不同及其间的进程通信。

信号sinal : 信号是一种比较复杂的通信方式,用于通知接受进程某个事件已经发生。

● 进程调度:

CPU的调度要极小化平均相应时间,即是极小化用户发出命令和看到某种结果之间所花费时间,还要极大化系统吞吐量,即是要在单位时间内完成尽可能多的程序,同时也要保证系统各个功能部件繁忙运作和公平调度。

先来先服务算法FCFS(frist come frist serve)。则是类比为排队的先来后到原则。程序启动则一直运行到结束或受阻塞为止,不允许抢占。

时间片轮换。周期性进行进程切换,改善了程序的响应时间,短程序排在长程序后面不至于长时间都无法执行。

短任务优先算法STCF(shorted time to completion frist)。提高短任务的优先级,安排优先级高的程序先运转。分为抢占与非抢占式。

优先级调度。STCF的缺点在于可能造成长进程饥饿。给每一个进程赋予优先级,切换进程时安装进程的优先级进行调度。可有效解决进程饥饿问题,不过问题在于响应时间不能保证。

混合调度算法。各调度算法各有优劣,所以使用混合调度算法。将所有进程分成不同的大类,每个 大类为一个优先级。如果两个进程处于不同的大类,优先级高的先执行,如果处于同一个,则采用时间片轮换。

其他调度算法:保证调度、彩票调度、用户公平调度等等。

总结:进程管理即是操作系统对CPU的管理,为了提升CPU利用率使用多道编程,便有了多进程维护管理要做,同时出现进程的同步、通讯等协调管理。操作系统已实现了各管理功能,硬件CPU及一系列进程资源抽象成为了进程的概念,可以说进程算是操作系统的“无中生有”,应用程序的编程人员直接利用进程的机制,达到让应用程序高效利用硬件资源的目的。然而最为复杂的和硬件交互的部分,是OS来解决。内存原理部分、IO原理、文件系统原理等均可认为是操作系统对硬件的抽象和管理。在对操作系统的了解学习之后,做应用程序的编程,会觉得就像是在做操作系统所实现的功能的排列组合。实现应用在编码初期是最大的成就感来源,然而其实我们都是站在巨人的肩膀之上。更为可贵的是,操作系统的学习过程中,学习和体会前人在解决问题的思路, 再具体到细节时,会发现数据结构以及算法的实现,对这两者的学习和认知也会很有帮助。可以说,操作系统的学习,不同的层次,由浅及深,都会有不同层次的收获。

操作系统学习体会之进程管理篇相关推荐

  1. 操作系统学习笔记_03_进程的概念与操作

    1.进程的概念和状态 进程的概念常常和程序糅合在一起,但两者实际是不一样的.首先,"进程"所包含的内容比"程序"丰富."程序"这个概念可以用 ...

  2. 操作系统学习笔记7——进程管理中的数据结构:进程控制块

    进程控制块(PCB)--最重要的记录型数据结构 PCB的作用 1.作为独立运行的基本单位的标志: 系统创建一个新进程时,就为它建立一个PCB,进程结束时回收PCB,进程也随之消亡,系统通过感应PCB来 ...

  3. 计算机操作系统学习笔记_6_进程管理 --死锁

    一.死锁的概念 1.死锁的概念 系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁. 2.死锁产生的原因 (1)进程推进顺序不当 (2)对互斥资源的分 ...

  4. 操作系统学习笔记-2.1.4进程通信

    操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...

  5. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

  6. 操作系统学习笔记-2.1. 2进程的状态与转换

    操作系统学习笔记-2019 王道考研 操作系统-2.1. 2进程的状态与转换 文章目录 2进程的状态与转换 2.1知识概览 2.2进程的状态-三种基本状态 2.3进程的状态-另外两种状态 2.4进程状 ...

  7. 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征

    操作系统学习笔记-2019 王道考研 操作系统-2.1.1.进程的定义.组成.组织方式.特征 文章目录 2.1.1.进程的定义.组成.组织方式.特征 1.1知识概览 1.2进程的定义 1.3进程的组成 ...

  8. 计算机系统概述学后感,计算机操作系统学习心得体会总结(2)

    计算机操作系统学习心得体会篇四 课程设计是每一个大学生在大学生涯中都不可或缺的,它使我们在实践中了巩固了所学的知识.在实践中锻炼自己的动手能力;实习又是对每一位大学生所学专业知识的一种拓展手段,它让我 ...

  9. 计算机操作系统学习笔记 第二章、进程与线程

    文章目录 1 进程和线程 1.1 进程的概念和特征 1.1.1 进程的概念 1.1.2 进程的特征 1.2 进程的状态与转换 1.3 进程的组织 1.4 进程控制 1.5 进程通信 1.5.1 共享存 ...

最新文章

  1. 关于yum库的相关问题
  2. 复习计算机网络day2
  3. python最简单的爬取邮箱地址_python简单爬虫,抓取邮箱
  4. AngularJS 1.x 国际化——Angular-translate例子
  5. 行政区村界线_工作动态 | 龟山镇召开村级行政区域界线勘定工作暨民政业务培训会议...
  6. Java初级学习(转载http://www.cnblogs.com/biehongli/p/5737612.html)
  7. chorme插件 ,在浏览器上模拟手机,pad 查看网页|前端技术开发必备插件
  8. FastCGI中文规范
  9. 张向东:就以当年期望别人对我们那样的方式
  10. Windows Server 2008 R2托管服务账户(MSA)的功能
  11. java去掉mongodb日志_JAVA开发 Mongodb3.0以上 去掉控制台DEBUG信息
  12. V4L2应用程序框架--一【转】
  13. 《Lua程序设计》第1章 开始 学习笔记
  14. 7.Linux 高性能服务器编程 --- Linux 服务器程序规范
  15. 机器人动力学——拉格朗日法
  16. ATmega / AVR单片机型号标识规则及选型
  17. 携职教育:中级职称《系统集成项目管理师》巨大作用!
  18. 北邮机试 打牌——破除固化思维,连续与不连续
  19. 6月楼市或迎降价潮 房企策略有调整
  20. docker+nginx重来部署vue项目

热门文章

  1. echarts图表宽度为百分比出现的问题
  2. 引流平台如何分类?如何进行引流?
  3. 猜小拳,溯清源。Python的生态源码创新应该得到尊重!
  4. ISE14.7生成MCS文件
  5. 万年历(1900年之后日历)
  6. 汽车启动档位,份4个
  7. word修改标题编号
  8. Android 交流分享汇总
  9. js处理浏览器声音提示
  10. 单目标跟踪通过CAM绘制heatmap图像(以SiamCAR为例)