【发布时间】:2012-03-11 10:29:21
【问题描述】:
我正在开发一个虚拟的类 Unix 操作系统 (OS161),我希望实现类似于 Unix 的过程,即 fork()、execv()、getpid()、waitpid()。
首先,我需要有一个进程的概念,并给每个进程一个自己的进程 ID,一个唯一的整数值来区分它们。据我所知,每个进程都与自己关联一个地址空间,以及至少一个线程;可能更多。让我们暂时保留一个。
所以我创建进程概念的第一个想法是为每个线程和地址空间赋予一个唯一的进程 ID,并创建一个包含所有 PID 的全局列表变量(哈希表?链表?) .特别是,我目前有空:
struct thread;
struct addr_space;
所以我可以进入这些结构并添加一个“PID”字段作为整数。或者,我想我可以创建一个包装器“结构进程”并包含一个线程(或线程列表)和一个地址空间作为成员。
[注意:目前我拥有的线程结构有一个地址空间结构作为其成员之一......这是否意味着它本质上已经是一个进程?我可以提供更多详细信息,以供参考,我正在使用 OS161]
最后,还有我应该如何存储 PID 的问题。我很确定它必须是某种全局列表结构(类似于与线程相关的各种队列),但不确定什么是可取的。
干杯。
【问题讨论】:
-
这是什么语言?请添加语言标签并编辑您的问题以使其更加明显。我假设这是 C 或 C++?
标签: c multithreading process operating-system