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

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.
主站蜘蛛池模板: 吉安市| 锡林浩特市| 新安县| 密山市| 南阳市| 郴州市| 平定县| 老河口市| 卓尼县| 黑龙江省| 休宁县| 辽阳市| 双桥区| 泾川县| 崇阳县| 和平区| 河东区| 永胜县| 桐城市| 南部县| 吉安县| 宜昌市| 永福县| 天峨县| 连江县| 荃湾区| 河曲县| 镇江市| 揭阳市| 北流市| 特克斯县| 利津县| 双桥区| 新化县| 荔浦县| 赤水市| 肃南| 平邑县| 三明市| 邵阳县| 湘潭县|