官术网_书友最值得收藏!

The various states of a Unix process

Strictly speaking, a process is an execution environment that contains instructions, user-data and system-data parts, and other kinds of resources that are obtained during runtime. A program is a file that contains instructions and data, which are used for initializing the instruction and user-data parts of a process.

Back when the Unix operating system was first introduced, computers had single CPUs without multiple cores and a small amount of RAM. However, Unix was a multiuser and multitasking operating system. In order to actually be a multiuser and do multitasking, it had to be able to run each individual process sporadically, which means that a process should have multiple states. The following figure shows the possible states of a process as well as the right path to go from one state to another:

The states of a Unix process

There are three categories of processes: user processes, Kernel processes, and Daemon processes:

  • User processes run in user space and usually have no special access rights
  • Kernel processes are being executed in kernel space only and can fully access all kernel data structures
  • Daemon processes are programs that can be found in the user space and run in the background without the need for a Terminal

Realizing that you cannot control the state of a process is really important, as this is the job of the scheduler of the operating system that runs in the kernel. Putting it simply, you cannot tell when the state of a process is going to change or when the process is going to go into the running state, so your code cannot count on any such assumptions!

The C way for creating new processes involves the calling of the fork() system call. The return value of fork() allows the programmer to differentiate between the parent and child processes. However, Go does not support a similar functionality.
主站蜘蛛池模板: 佛山市| 罗甸县| 普兰县| 武定县| 墨脱县| 枣阳市| 营口市| 镇雄县| 灵璧县| 曲麻莱县| 富民县| 应用必备| 类乌齐县| 砀山县| 西充县| 林周县| 九台市| 苍梧县| 买车| 淅川县| 拉萨市| 长春市| 焦作市| 禄丰县| 贵州省| 新乐市| 新民市| 伊春市| 铁岭县| 太保市| 亳州市| 长泰县| 阳新县| 铜山县| 夏河县| 卓尼县| 墨竹工卡县| 永胜县| 台前县| 南和县| 岐山县|