QNX Neutrino中的Process Manager包含了以下三个方面:
・Process management[进程管理]:对进程的创建,销毁和进行的属性如UID(user ID)和GID(group ID)进行管理。
・Memory management[内存管理]:管理进程的地址空间和共享库,和进程内的共享内存。
・Pathname management[路径管理]:管理可能用到资源的路径。
一、Process management[进程管理]
与进程相关的Primitive[原语]:
・posix_spawn()[POSIX]:通过指定的可执行对象创建一个新的子进程。
・spawn()[QNX Neutrino]:QNX实现的posix_spawn()继承更多的属性。
・fork()[POSIX]:通过拷贝自己的进程数据并使用相同的代码创建一个子进程。只有当进程中只有一个线程的时候才能调用。
・vfork()[UNIX BSD扩展]:当希望通过fork()及其后的exec()函数创建一个新进程的时候使用。vfork()不会拷贝进行数据,父进程控制新的地址空间知道掉用了exec()。通过这次方式启动进程,没有通过posix_spawn()有效率。只有当进程中只有一个线程的时候才能调用。
・exec()[POSIX]:通过制定的可执行对象创建一个新进程,新进程覆盖原进程的执行环境。
可执行对象为ELF(Executable and Linking Format)格式的文件。
二、Memory management[内存管理]
内存保护是,当一个进程试图访问非法内存块时,MMU会通知OS,让其终止该线程。典型的MMU(Memory Management Units[内存控制器])会将物理内存划分为4KB的页,处理器中的设备会用一组存在内存中页表(Page Tables)来讲虚拟内存地址映射到实际物理地址中。为了提升效率,处理器会缓存一些常用的页表在TLB(Translation look-aside buffer[页表缓冲])中。
三、Pathname management[路径管理]
Procnto容许资源管理器通过标准API提供、并管理一个字路径作为自己的授权域(domain of authority)。当一个进程打开一个文件的时候,进程首先会将路径发给Procnto,procnto会根据路径的前缀来判断由哪一个资源管理器来处理。当一个前缀被重叠注册时,会使用与最长的前缀关联的资源管理器来处理。
当一个IO资源被打开时,会返回一个文件描述符(File descriptor:FD)。与Pathname space不同,文件描述符与进程相关。
QNX的进程管理
最新推荐文章于 2023-12-27 17:49:22 发布