学习操作系统心得体会_操作系统学习心得-程序员宅基地

技术标签: 操作系统  

学习操作系统心得体会


很快的,一个学期的《操作系统》课程就要结束了,在这个学期,通过老师的传授和课本以及课下的阅读学习,让我对计算机操作系统的一些实现原理和简单的操作过程有了基本的了解。

在学习操作系统之前,我在前面几个学期计算机导论,计算机组成原理,C语言等课程,这些课程让我了解了计算机硬件如处理器、随机访问存储器、输入输出设备、磁盘驱动器等部件的组成及工作原理,于是我就曾想过自己亲手组装,或者在脑海中虚拟组装一下也可以,把这些互相分离的计算机大部件连接起来,万事俱备,然后通上电,期待着显示器出现想要出现的画面。然而,并非如愿以偿,因为事实上,还缺少了一个重要的部分——软件,更确切的说——操作系统

经过近乎一个学期的学习,我知道了,操作系统是一个由许多软件构成的庞大的程序集合,它不仅仅单是为用户提供友好界面,更重要的是它还管理着计算机系统的全部硬件资源、软件资源及数据资源,从而使计算机各个组成部件能够顺利高效地、资源最大限度地发挥作用。

当计算机开机后,CPU一加电,通过内存中的硬件系统检测和初始化程序完成后,便调用操作系统引导程序,从此,便将此计算机彻底交由操作系统来控制。操作系统是一个需要在CPU上运行的软件,它可以为其他应用软件提供支持,不过,作为此计算机的主宰,每一种操作系统都对它所管理的操作系统提出了种种的格式上的要求。比如每次我在我的计算机上下载应用软件的时候还要看是否能够兼容我的Windows10。

课堂上老师结合书本,很详细的介绍了操作系统主要工作原理。并发、共享、虚拟、异步,是OS共有的基本特征,它们使计算机能够高效的整合利用计算机资源,其实也是OS设计的基本要求。微内核OS结构是当前普遍一种OS设计。由于操作系统越来越强大、复杂,便只保留OS内核中最基本的部分,其他部分根据模块分层,相互独立,视作为进程来交互信息。

进程是操作系统进行资源分配的基本单位,它的基本信息和运行状态是由进程控制块(PCB)来描述和管理的,即所谓的创建进程和销毁进程,其实都是对PCB的操作。进程和线程是有区别的,比如说,打开一个浏览器,即是创建了一个进程,而浏览器里面有很多线程,如http请求线程、事件响应线程等等。线程的并发执行使得在浏览器中点击一个新链接而发起 http请求时,浏览器还可以响应用户的其它事件。线程和进程的并发执行可以提高系统资源利用率和系统吞吐量。

并发执行的进程之间,必须能够相互协调,即按照一定的规则或时序共享系统资源,那么便引入了进程同步机制。经典的进程同步问题有“生产者——消费者”问题、“读者——写者”问题、“哲学家进餐”问题等。如使用信号量机制实现的生产者消费者问题需要对其进行很多控制,确保共享资源能够互斥有效利用,利用管程,即代表抽象共享资源的数据结构及对其实施操作的一组过程,可以很好的解决资源管理问题。

如果同步问题的处理不当甚至会导致系统死锁,这就需要处理机调度算法来进行资源分配。死锁是指两个以上的进程在执行过程中,因为争夺共享资源而造成的一种互相等待的忙等现象。由于资源是互斥访问的,程序就不能继续运行,这就产生了一种特殊现象死锁。最具代表性的避免死锁算法,是Dijkstra的银行家算法。银行家算法必须保证分配资源前,系统有足够的资源分配给进程,且分配之后,系统是安全状态的。

在先前计算机组成原理课程中,我了解了存储器的组成及工作原理,但是,存储器的管理及虚拟内存技术,使我对存储器有了更进一步了解。虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存进行容量扩充的存储器系统。一个虚拟存储器,采用地址映射,将虚拟地址分成存储页面号和偏移量两个部分。为了保证虚拟存储器最大效率的利用,良好的页面置换算法如最佳置换算法、FIFO算法、LRU算法等,是直接影响到系统性能的重要保证。段页式则在扩展内存的基础上,进一步实现了数据的共享和保护。

《操作系统》是作为我专业的核心课程的,对于它的认知仅仅一学期的时间是不够的。实现一个很简单的操作系统大概也需要六七千行代码实现,而单靠一个人实现一个近乎完美的操作系统几乎是不可能的。所以,我们实验是对OS功能的部分简单模拟实现。

未来我想自己动手写一个简单的操作系统,这需要更加深入的学习汇编语言、计算机组成原理、微机原理及C语言数据结构如链表等方面的知识,同时,也需要阅读其他介绍操作系统的书籍资料。

“师父领进门,修行在个人”,回顾这一个学期的学习,有很大的收获,也有不小的遗憾。接下来,我知道,计算机这个大黑匣子,还有很多东西需要我去学习、去应用、去探索。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44076570/article/details/103571857

智能推荐

am-u-sm-6 am-u-md-6 am-u-lg-3_am-u-sm-6 lg-fg-red-程序员宅基地

文章浏览阅读6.8k次。am-u-sm-6(或其他数字) am-u-md-6(或其他数字) am-u-lg-3(或其他数字)这些事什么意思呢?网站上查资料发现: am-u-sm-*  0-640px am-u-md-*  640px-1024px am-u-lg-*   1025px+.am-g表示行.am-u-sm(/md/lg_am-u-sm-6 lg-fg-red

Android 系统的安全性分析(6)--Android应用层权限的讨论-程序员宅基地

文章浏览阅读656次。最近工作上涉及到对Android系统安全性的改造,在改造之前先分析整理下目前Android系统自身的安全性;参考了一些文章及书籍,在这里大部分是对别人描述的提炼,我挑出一些对我有用的内容整理;如果你是一个APP开发者,想更深入了解Android权限机制,会对此篇更感兴趣。

Android 开发环境下载地址 adt-bundle android-studio sdk adt 下载_c0930-程序员宅基地

文章浏览阅读1.6k次。Android 开发环境介绍 : 目前 Android 有两种开发环境, 一种是传统的 Eclipse + ADT, 一种就是目前最新并且得到 Google 推荐的 Android Studio;-- Eclipse + ADT 开发环境 : 大多数开发者正在使用的, 正在逐渐被淘汰中, 目前我也在用这个环境;-- Android Studio 开发环境 : 该环境推出几年, 与_c0930

beego源码解析之路由_beego router 通配符-程序员宅基地

文章浏览阅读264次。目录简单的例子路由涉及的重要组件AppControllerRegisterControllerInfoTreeControllerInterfaceController路由表注册流程:路由匹配流程简单的例子func main() { beego.Router("/get", &MainController{}) beego.Run()}​type MainController struct { beego.C.._beego router 通配符

mysql游标统计_集成MySQL的自定义函数,存储过程,游标应用,实现分词功能和统计功能....-程序员宅基地

文章浏览阅读185次。使用MySQL中的函数,存储过程,游标,来实现,数据库里分词并且统计的功能。先看功能效果:有这么一个tempic表,其中有个字段 是keyword.这个字段的数据是用“,” 或者“,”隔开的. 现在我们实现的功能是将keyword中的数据,根据逗号“,”把她分开。并且统计相同分割后的词语的filedowntime的和.举个例 :id=1的数据,keyword是 宝宝,可爱,熊id=6的数据,ke..._mysql统计分词

app微信支付统一下单_crypto.createhmac('sha256', clientsecret).update(`-程序员宅基地

文章浏览阅读1.8k次。php版的需要注意的地方记录一下签名的加密方式为sha256返回给客户端的参数全小写,不是驼峰返回给客户端调起支付的签名统一下单的加密方式要一样,即sha256全部代码 参数记得替换 public function payFor() { header("Access-Control-Allow-Origin: *"); header("Access-Contr..._crypto.createhmac('sha256', clientsecret).update(`${appid}${time

随便推点

elasticsearch max virtual memory areas vm.max_map_count [65530] is too low, increase to at le-程序员宅基地

文章浏览阅读2.1k次。具体错误信息如下:jiankunking@ubuntu:~/software/elasticsearch$ ./bin/elasticsearch[2017-03-23T18:14:05,880][INFO ][o.e.n.Node ] [] initializing ...[2017-03-23T18:14:06,151][INFO ][o.e.e.NodeE..._max virtual memory areas vm.max_map_count [65530] is too low, increase to at

UDS(ISO14229)诊断服务功能及描述完结篇_uds14229-程序员宅基地

文章浏览阅读2.7w次,点赞76次,收藏614次。文章目录前言一、诊断和通信管理功能单元1. 0x10(DiagnosticSessionControl)2. 0x11(ECUReset)3. 0x27(SecurityAccess)4. 0x28(CommunicationControl)5. 0x3E(TesterPresent)6. 0x83(AccessTimingParameter)7. 0x84(SecuredDataTransmission)8. 0x85(ControlDTCSetting)9. 0x86(ResponseOnEvent)1_uds14229

理解红黑树及代码实现_红黑树代码实现-程序员宅基地

文章浏览阅读7.9k次,点赞18次,收藏116次。1.红黑树定义红黑树是一颗 红-黑的平衡二叉树,它具有二叉树的所有特性,是一颗自平衡的排序二叉树.(树中任何节点值都大于左子节点的值,而且都小于右子节点的值),其检索效率高,它是一颗空树或它的左右两个子树高度差的绝对值不超过1,并且左右子树都是平衡二叉树.最坏的情况下 是一边倒的情况在这种情况下,如果我们要在树中查找g节点,就需要顺着根节点往下找,时间复杂度约为O(n)常数级。那么红黑..._红黑树代码实现

html背景图片纵向拉伸,在css中设置图片的背景图,怎么设置图片纵向拉伸-程序员宅基地

文章浏览阅读908次。css中设置背景图拉伸填充,在css2.1之前这个背景的长宽值是不能被修改的。 实际的结果是只能重复显示,可以使用repeat,repeat-x,repeat-y,no-repeat这些属性来控制背景图片的显示。所以一般用作背景图片的有2类:1.是一整张大图,尺寸和区域大小刚好吻合2.一个很小的条状图,通过repeat后,形成一个很规则的大图背景。css3出现以后,可以用background-si..._background-size纵向拉伸

echo 3 > /proc/sys/vm/drop_caches 清理系统缓存_执行echo 3 >/proc/sys/vm/drop_caches,以下那种描述是正确的-程序员宅基地

文章浏览阅读4.5k次。清理系统缓存当服务器内存使用率高达90%以上时,且有较大耗内存操作时,可以考虑把系统的垃圾内存清理掉。方法如下linux23:~ # echo 3 > /proc/sys/vm/drop_cacheslinux23:~ # free -mtotalusedfreesharedbufferscached..._执行echo 3 >/proc/sys/vm/drop_caches,以下那种描述是正确的

经过测试synchronized并不会立即释放锁_synchronized类锁没释放-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏3次。今天在测试进入偏向锁之后调用锁对象的hashCode()会不会升级为重量级锁,结果无意中测试出来了,synchronized进入重量级锁之后,即使临界代码执行完了也并不会立即释放锁先来看看对象头各个bit的含义上代码public class ObjectHeader { public static void main(String[] args) throws InterruptedException { Object monitor = new Object(); _synchronized类锁没释放

推荐文章

热门文章

相关标签