Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499163
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: LINUX

2009-09-21 11:42:53

POSIX OS指的是遵守POSIX规范的操作系统的总称,又可称之为类UNIX系统。
操作系统的功能分为两个部分:CPU调度和资源管理。
现代的POSIX OS一般是多线程的。讨论POSIX OS时,必然要研究进程和线程。
有汇编基础的人,可以从底层的观点来看待进程。
在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合和资源集合。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。线程有自己的私有数据:程序计数器,栈空间以及寄存器(可以认为线程自己保存着CPU的状态,而和其他线程共享内存空间)。
一个进程在内存中的“实体”是:
而线程是进程中的执行引擎。
可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。
子进程继承父进程资源的时候,一般是“写时拷贝”。内存管理器赋予它们不同的虚拟地址。
POSIX OS讨论资源的时候,可以分为文件抽象、SOCKET套接口、XIPC对象来讨论。
文件抽象:
包括普通文件,设备文件,管道,FIFO。
进程维护自身的文件描述符,文件描述符指向系统中的文件表,系统文件表再指向内存的德文件表。
文件指针偏移量保存在系统文件表中。
子进程如果继承了父进程的文件描述符,同时继承系统文件表中的项目,那么和父进程共享文件偏移量。
对于进程间对同一个文件的读写问题的讨论,事实上是操作系统理论的I/O问题。
注意到文件抽象的实体是不同的设备。在POSIX OS中,对文件的读写可能受到用户空间缓存,系统缓存和设备缓存的影响。
C库中的文件指针I/O的函数有自己的缓存,除非遇到换行符或者fflush等。
write函数将用户空间的数据拷贝的系统的buffer ccache中。
与设备相关的缓存,可能是一个网络设备可以搜集按时间到达的数据,然后再按序写入存储体。
关于“写覆盖”问题,对于普通文件,写命令是字符串加上相应的指针偏移量,所以存在“写覆盖”;对于终端,管道等,写命令式FIFO的,所以不同进程的写命令式不会彼此覆盖的,虽然顺序可能错乱。
SOCKET:
XIPC:
阅读(2132) | 评论(0) | 转发(0) |
0

上一篇:POSIX OS overview

下一篇:overview

给主人留下些什么吧!~~