随笔分类 -  操作系统

摘要:线程类Thread是对POSIX线程的封装类,因为要构建的是一个Linux环境下的多线程网络库,对线程的封装是很必要的。 首先是CurrentThread命名空间,主要是获取以及缓存线程id: 这里要注意一个问题,就是线程id的获取。 线程id的获取可以通过几种方式,最方便的是syscall(),是 阅读全文
posted @ 2018-12-18 11:22 luStar 阅读(450) 评论(0) 推荐(0) 编辑
摘要:一、资源 把需要排他性使用的对象称为资源。资源可以是硬件也可以是软件,比如打印机或者数据库中的一个加锁记录。 资源可以分为两类:可抢占资源和不可抢占资源。 可抢占资源:可以从拥有它的进程中抢占而不产生副作用。 不可抢占资源:不引起相关的计算失败的情况下,无法把它从占有它的进程处抢占过来。 抢占这个词 阅读全文
posted @ 2017-12-23 16:13 luStar 阅读(5632) 评论(0) 推荐(0) 编辑
摘要:零——什么是文件系统? 文件这个词,相信大家从小就不陌生。实体的文件,可能会是打印的A4纸;虚拟的文件,可能是*.doc、*.dll以及*.exe等等格式。文件,就是用来记录信息的逻辑单元。 文件系统这个概念,我们大部分人可能也接触过。重装系统的时候,会遇到给磁盘分区,以及格式化的问题;当然,格式化 阅读全文
posted @ 2017-11-29 13:06 luStar 阅读(916) 评论(0) 推荐(0) 编辑
摘要:操作系统将内存按照页的进行管理,在需要的时候才把进程相应的部分调入内存。当产生缺页中断时,需要选择一个页面写入。如果要换出的页面在内存中被修改过,变成了“脏”页面,那就需要先写会到磁盘。页面置换算法,就是要选出最合适的一个页面,使得置换的效率最高。页面置换算法有很多,简单介绍几个,重点介绍比较重要的 阅读全文
posted @ 2017-11-21 22:29 luStar 阅读(21526) 评论(0) 推荐(2) 编辑
摘要:一、存储器抽象:地址空间 现代计算机采用多道程序设计,系统中同时运行了多个进程。要保证多个程序同时在内存中并且互不影响,就需要解决两个问题:保护和重定位。 地址空间:一个进程可以用来寻址内存的一套地址集合。 每个进程都有自己的一个地址空间,并且这个地址空间独立于其他进程的地址空间。有了地址空间,一个 阅读全文
posted @ 2017-11-15 20:45 luStar 阅读(455) 评论(0) 推荐(0) 编辑
摘要:对于多道程序设计的系统,就会有多个进程或者线程在同时竞争CPU。对于单核系统,调度问题,就是选择下一个要运行的进程或者线程是哪一个。 线程的调度与进程类似,对于按内核级别的调度,与线程所属的进程基本没有关系。 进程切换的代价是比较大的,包括用户态到内核态的切换、保存当前进程的状态、内存映像的改变、调 阅读全文
posted @ 2017-10-23 12:31 luStar 阅读(8567) 评论(0) 推荐(2) 编辑
摘要:在有了进程和线程的模型之后,一个很大的问题就摆在眼前:进程和线程的执行顺序是不可预知的,那么,如何使得两个进程按照我们想要的顺序执行,从而得出正确的结果呢? 竞争条件:两个或者多个进程读写某些共享数据,最后的结果依赖于进程运行的精确时序。 临界区:把对共享内存进行访问的程序片段称作临界区。如果能使两 阅读全文
posted @ 2017-10-18 21:21 luStar 阅读(5969) 评论(0) 推荐(1) 编辑
摘要:进程可以说是操作系统最为核心的一个抽象,而线程可以认为是一种轻量级的进程,或者说一个进程内的多个迷你进程。 一、进程的模型 进程(process):进程是一个正在运行的程序的实例。对于一个单核的处理器,每个时刻只能运行一个程序,但在每一个时间段,它可能运行多个进程,这样就产生了并行的错觉。 从概念上 阅读全文
posted @ 2017-10-10 22:29 luStar 阅读(2121) 评论(0) 推荐(1) 编辑