操作系统--基于Linux的进程的并发执行2(超详细/设计/实验/作业/练习)
创始人
2024-06-02 15:55:37
0

目录

  • 课程名:操作系统原理及Linux应用
    • 内容/作用:设计/实验/作业/练习
    • 学习:基于Linux的进程的并发执行2
    • 一、前言
    • 二、环境与设备
    • 三、原理
    • 四、内容
    • 五、总结与分析

课程名:操作系统原理及Linux应用

内容/作用:设计/实验/作业/练习

学习:基于Linux的进程的并发执行2

一、前言

  1. 理解并发进程的基本概念和执行特征
  2. 理解进程的资源继承和并发执行。
  3. 理解进程的资源竞争和互斥实现。

二、环境与设备

1.软件:虚拟机VMware
2.环境:Linux系统环境

三、原理

   1,下面这个C程序展示了UNIX系统中父进程创建子进程及各自分开活动的情况。

fork( )

创建一个新进程。
系统调用格式:

pid=fork( )

参数定义:

int fork( )

fork( )返回值意义如下:

0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。
>0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。
-1:创建失败。
如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。

四、内容

   1,代码:

Fork1.c
#include
#include
#include
int main()
{pid_tfpid;int count=0;fpid=fork();if(fpid<0)printf("error in fork!");else if(fpid==0){printf("I am the child process,my process id is %d\n");printf("我是爹的儿子\n");count++;}else{printf("I am process,my process id is %d\n");printf("我是孩子他爹\n");count++;}printf("统计结果是:%d\n,count");return 0;}
Fork2.c
#include
#include
int main()
{int p;p=fork();if(p==0){putchar('b');}else{p=fork();if(p==0)putchar('c');elseputchar('a');}printf("\n");return 0;}
Fork3,c
#include
int main()
{int p;printf("This is parent(pid=%d) process \n",getpid());p=fork();if(p==0)printf("This id child1(pid=%d) process:b\n",getpid());else{p=fork();if(p==0)printf("This is child2(pid=%d) process :\n",getpid());}printf("\n");return 0;
}
Fork4.C 
#include
#include
int main()
{int i;printf("I son/pa ppos pid fpid\n");for(i=o;i<2,i++){pid_tfpid=fork();if(fpid==0)printf("%d child %4d %4d %4d\n",i,getppid(),getpid(),fpid());else{printf("%d parent %4d %4d %4d\n",i,getppid(),getpid(),fpid());}return 0;}
}

五、总结与分析

   1,printf某些内容时,操作系统仅仅是把该内容放到了缓冲队列里,并没有实际显示到屏幕上。因此fork 后,子进程得到这份拷贝。而当printf中含有\n时, printf将刷新,因此子进程无法得到这份拷贝,fork也就只输出一次了。因此程序输出结果不管是子进程还是父进程前面都带有,而程序B只有当父进程执行时才会输出。

相关内容

热门资讯

魅族系统如何装安卓,一键安装教... 你有没有想过,你的魅族手机其实也可以拥有安卓系统的风采呢?没错,就是那个自由度极高的安卓系统!今天,...
安卓系统手势软件下载,精选手势... 你有没有发现,现在手机操作越来越方便了?一大波手势软件正在悄悄改变我们的使用习惯。今天,就让我带你一...
安卓手写平板系统重装 你那安卓手写平板系统是不是突然间就闹起了别扭,各种卡顿、崩溃,让你头疼不已?别急,今天就来给你详细说...
文件系统苹果安卓通用 你有没有想过,无论是苹果的iOS还是安卓的Android,这些智能手机和电脑上的文件系统,其实就像是...
安卓电脑怎么刷系统教程,轻松刷... 你有没有遇到过安卓电脑系统卡顿、运行缓慢的情况?别急,今天就来教你怎么给安卓电脑刷系统,让你的电脑焕...
系统从安卓到鸿蒙,系统变革的跨... 你知道吗?手机操作系统界最近可是风云变幻,让人眼花缭乱呢!从安卓到鸿蒙,这不仅仅是一个系统的更迭,更...
车视杰安卓系统更新,畅享智能出... 亲爱的车友们,最近有没有发现你的车视杰导航仪突然变得聪明了许多?没错,这就是车视杰安卓系统更新的魔力...
鸿蒙系统备份到安卓手机,轻松迁... 你有没有想过,把你的鸿蒙系统备份到安卓手机上,是不是能让你在两个系统间无缝切换呢?想象你可以在鸿蒙系...
安卓子系统界面缺失,揭秘系统漏... 最近我的安卓手机出了点小状况,让你也跟着我一起探究探究吧!你知道,安卓系统作为全球最受欢迎的手机操作...
hk1box安卓原生系统和安卓... 亲爱的读者们,你是否曾为寻找一款既能满足日常使用,又能畅享大屏娱乐的安卓系统而烦恼?今天,就让我带你...
安卓把资料导入苹果系统,安卓资... 你有没有想过,有一天你的安卓手机里的宝贝资料,比如照片、音乐、视频,能像变魔术一样,瞬间出现在你的苹...
安卓系统和tv版系统的区别,功... 你有没有发现,手机上的安卓系统和电视上的安卓系统好像有点不一样呢?没错,这就是今天我们要聊的话题——...
u盘安卓系统启动,便捷移动办公... 你有没有想过,有一天你的U盘不仅能存储文件,还能变身成一个迷你电脑呢?没错,就是那种可以直接启动安卓...
安卓不让华为用12系统 你知道吗?最近安卓和华为之间可是闹出了不小的风波呢!安卓决定不让华为继续使用最新的12系统,这可让不...
小米电视系统安卓几,基于安卓X... 亲爱的读者们,你是否也和我一样,对小米电视的操作系统充满了好奇?想知道它到底运行的是哪个版本的安卓系...
intel芯片支持安卓系统吗 你有没有想过,那些在电脑上呼风唤雨的Intel芯片,是不是也能在安卓系统里大展身手呢?今天,就让我带...
安卓品牌哪个系统最好用,探寻最... 你有没有想过,手机里的安卓系统哪个品牌用起来最顺心呢?市面上这么多安卓手机,每个品牌都有自己的特色和...
安卓变苹果系统pdd,PDD系... 你知道吗?最近在互联网上掀起了一股热潮,那就是PDD(PDD,全名PDD转换器)这个神奇的小工具。它...
安卓系统电话录音权限,安卓系统... 你有没有发现,现在手机里的电话录音功能越来越普及了?这不,最近我在研究安卓系统的电话录音权限时,发现...
加速器国内安卓系统,国内安卓系... 你有没有发现,最近手机上的游戏越来越好玩了?这都得归功于那些默默无闻的加速器。今天,就让我带你一探究...