随笔分类 - 【操作系统相关】operating systems
写这个系列博客只是为学习做个简单的笔记、
把书上比较专业的叙述用我所理解的方式重新阐述一遍,目的在于加深学习印象和方便以后的回顾
还有一个重要的原因就是最近看程序设计方面的书的时候发现自己对底层的东西比较感兴趣、想搞清楚到底计算机是如何运作的,,。。
刚才说到因为兴趣问题,所以学习的顺序和书上的自然就不一样
如果你对底层的东西也感兴趣、希望能给你一点点帮助。
参考的书是:机械工业出版社的《现代操作系统》
摘要:开篇异常这个名词应该大家都不陌生,很多人都听说过。系统调用知道吧?其实系统调用也是一种异常。但是具体的什么是异常呢?他在计算机中有什么作用?他是如何工作,如何被我们利用的?我想很多人都还不都是很清楚。、了解异常有诸多好处,可以让你更好的理解操作系统和应用程序的交互,更好的理解并发等。所以今天就简单的来说一下异常。注:本博文图片来源《Computer system-A Programmer's Perspective》什么是异常为了便于理解,我就不按照书本来了啊,异常可以这样理解:计算机执行一个连续的指令序列,如:a1,a2,a3,,,ak,这些指令执行的时候是顺序执行的,相邻的两条指令
阅读全文
摘要:Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:
阅读全文
摘要:开篇几乎每种程序设计语言的语法中都会有语句的循环,跳转。像最为熟知的C语言便有 for 、 while 、 do---while 等等。这些循环一般都很容易理解和使用,对于程序中逻辑的实现也很有帮助。只是很多人不曾知道,这些循环、跳转在计算机内部、在底层是如何实现的,于是在出现问题时还是没有好的解决办法,或者是虽然写出来程序,对于内部的逻辑,却还是隔了一层迷雾。比如有人对这样一个问题:for( i=0 ; i< 10 ; i++){printf(”%i“,i);}for语句里面的 i++ 是什么时候执行的呢? 当循环开始时,是先执行括号里的 i++ 还是printf(”%i“,i)? 也
阅读全文
摘要:开篇学习任何一门编程语言,都会从hello world 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的hello world。然而,对于hello world 这个简单程序的内部运行机制,我相信还有很多人都不是很清楚。hello world 这些信息是如何通显示器过显示的?cpu执行的代码和程序中我们写的的代码肯定不一样,她是什么样子的?又是如何从我们写的代码变成cpu能执行的代码的?程序运行时代码是在什么地方?她们是如何组织的?程序中的变量存储在什么地方?函数调用是怎样是现的?这篇文章将简单的讨论程序的运行机制开发平台隐藏的过程每一种语言都有自己的开发平台,我们的程序大
阅读全文
摘要:开篇1、背景之前的很长一段时间里,随着加工工艺的发展,cpu的处理速度一直在提升,基本上每18个月就会翻倍。直到04年cpu主频达到了4.0GH以来,这种规律似乎已经失效,原因是人们在制造cpu的工艺方面已经达到了物理极限。除非技术有本质突破,才能进一步提高cpu的处理速度。然而需要处理的数据量并没有因此而停止增长,其中的一个方法就是采用多核、并行处理技术。这会成为并且正在成为未来发展的趋势。要理解并行技术,对线程有一定的了解是很必要的。这篇博客主要说一下自己对线程的看法,这只是从简单的角度来看问题,入门级文章,笔者认知有限,有不足之处还望不吝指正。2、我的想法关于并发编程,我觉得如果能有一种
阅读全文
摘要:上一篇对死锁的思考【1】介绍了什么是死锁,对于每种类型一个资源和多个资源的检测,这里会介绍一下如何从死锁中恢复死锁的避免死锁的预防说明:这不是一篇专业性的文章,只是力求让读者能理解、知道什么是死锁。如果想要更具体深入的知识还需要查阅相关文献。从死锁中恢复抢占性恢复从字面上看,抢占性恢复就是强制把已经被占有的资源强制拿过来,分配给需要他的进程,而达到解除死锁的目的。在不通知持有资源进程的情况下,将资源强制占用,用完后又还给进程,这和资源本身的特性有关。即有的资源是不可抢占的。比如说一个正在刻录光盘的光驱,在它完成之前是不可抢占的。回滚技术简单的说,就是再检测到死锁的时候设法回到还没发生死锁的状态
阅读全文
摘要:开篇死锁是操作系统中的重要概念,和操作系统中的其他重要概念一样,对它的正确理解将帮助你写出更加高效、优秀的程序。这里没有晦涩的定义,只有易懂的描述和生动的例子。相信你看了之后会有所收获。什么是死锁简单的说,死锁就是电脑里的硬件资源或者软件资源不够用了。为什么会有这种情况呢?比如说A占有资源m,请求资源n。B占有资源n请求资源m。进程A和B都会因为请求不到自己的资源而睡眠。下面将进一步介绍。更形象的描述-死锁建模:为了能对死锁进行更好的分析,我们为死锁建模。就是用一个有向图来表示进程和资源的使用情况,圆形节点表示进程,方形节点表示资源。资源指向进程的边表示该进程占有该资源,进程指向资源表示进程请
阅读全文
摘要:开篇今天,计算机系统结构的真正挑战不在于内存的容量,而是内存的速度。如果你的软件实际上受到磁盘和内存的等待时间(访问时间)的限制,那么就是再好的芯片也无济于事。在内存和cpu之间存在着一道很深的鸿沟,而且是越来越深。在过去,每隔一两年,cpu的处理速度就会提升一倍,在相同的时间内,内存的容量倒是扩大了一倍,但它的访问时间提升却没有那么明显。。所以我的理解是:内存主要受限于容量和速度。容量问题除了集成工艺的发展扩大物理内存容量,还可用用虚拟内存的办法解决。访问速度则可通过Cache技术的发展和程序设计的优化。内存管理的前世今生最初的计算机使用的内存直接对物理内存进行访问。这样的方式很快就被淘汰,
阅读全文