3)安装vim编辑器,使用vim编制一段程序,使用系统调用fork()创建两个子进程,在此程序运行时,系统中就有一个父进程和两个子进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,两个子进程分别显示字符b和子符c。试观察、记录并分析屏幕上进程调度和并发执行的情况。若在程序中使用系统调用nice()来改变各进程的优先级,会出现什么现象?
时间: 2024-03-12 08:48:35 浏览: 21
以下是在Linux系统上安装vim编辑器和使用fork()创建父进程和两个子进程的程序:
1. 安装vim编辑器:
```
sudo apt-get update
sudo apt-get install vim
```
2. 创建一个新的C语言源代码文件,例如process.c,并使用vim编辑器打开该文件:
```
vim process.c
```
3. 在process.c文件中编写以下代码:
```c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
pid_t pid1, pid2;
pid1 = fork();
if (pid1 < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pid1 == 0) {
printf("Child 1: b\n");
} else {
pid2 = fork();
if (pid2 < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pid2 == 0) {
printf("Child 2: c\n");
} else {
printf("Parent: a\n");
}
}
return 0;
}
```
4. 保存并退出vim编辑器。在终端中输入以下命令编译process.c文件:
```
gcc process.c -o process
```
5. 运行编译后的可执行文件。在终端中输入以下命令:
```
./process
```
这将运行名为process的可执行文件,并在屏幕上显示父进程和两个子进程的字符。
观察、记录并分析屏幕上进程调度和并发执行的情况,您会看到父进程和两个子进程的字符交替出现,因为它们在并发执行并由操作系统调度。
如果在程序中使用系统调用nice()来改变各进程的优先级,那么会出现不同的现象。nice()函数可以将进程的优先级从-20(最高优先级)到+19(最低优先级)之间进行调整。在我们的例子中,如果我们将父进程的优先级提高到最高级别,则父进程将更频繁地运行并显示字符“a”,而子进程将更少地运行并显示字符“b”和“c”。
请注意,在实际情况下,不应该在没有必要的情况下改变进程的优先级,因为这可能会导致其他进程无法获得足够的CPU时间,从而影响系统的整体性能。