随笔分类 -  操作系统原理

摘要:1 并发很久很久以前是没有并发这个概念的,因为那个时候操作系统并不支持多任务。现在的操作系统今非昔比,支持抢占式任务、多线程、分页、TCP/IP等现代操作系统特性。能满足用户各种各样的需求同时响应用户的不同操作,靠的是多任务系统的支持。简单来说,多任务就是多个任务一起轮流的执行在操作系统上。这种执行方式在单处理器上给人同时执行的幻象,在多处理器上却是真正的并行。但问题是处理器的数目总是比进程数目少的多,也就是说总是有进程得不到执行。这个问题需要进程调度程序解决的。在此之前先解释下进程和线程。在Unix时代一个进程(执行中的程序)只有一个线程,现代操作系统允许一个进程有多条线程。这里需要具体解释 阅读全文
posted @ 2014-02-07 10:58 WhoAmMe 阅读(467) 评论(0) 推荐(0)
摘要:我们知道,计算机中有很多概念并不容易理解,有些时候一个好的比喻能胜过很多句解释。下面两个是我看到的两个很精彩的比喻,拿出来和大家分享一下。第一比喻是关于吞吐量(throughput)和延迟(latency)的。如果你要搞网络性能优化,这两个概念是你必须要知道的,它们看似简单实则不是。我相信包括我在内的很多人都曾经认为大的吞吐量就意味着低延迟,高延迟就意味着吞吐量变小。下面的比喻可以解释这种观点根本不对。该比喻来自这里,我来做个大体意译(非逐字翻译)。我们可以把网络发送数据包比喻成去街边的 ATM 取钱。每一个人从开始使用 ATM 到取钱结束整个过程都需要一分钟,所以这里的延迟是60秒,那吞吐量 阅读全文
posted @ 2013-11-25 16:59 WhoAmMe 阅读(273) 评论(0) 推荐(1)
摘要:一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串就是放在这里的。程序结束后由系统. 阅读全文
posted @ 2013-09-27 11:40 WhoAmMe 阅读(216) 评论(0) 推荐(0)
摘要:进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3.进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4.一个车间里,可以有很多工人。他们协同完成一个任务。5.线程就好比车间里的工人。一个进程可 阅读全文
posted @ 2013-05-02 16:50 WhoAmMe 阅读(164) 评论(0) 推荐(0)