目录
1、进程的基础知识:
(1)进程:
一个正在运行的程序
(2)PCB:
进程控制块
进程控制块是用一个结构体struct task_struct来实现
(3)进程的状态:
就绪,阻塞,运行
时间片轮转调度
(4)并发与运行
2.操作系统发展史
操作系统:管理计算机上的软硬件资源,为用户提供一个交换接口
操作系统精髓与设计原理35页
(1)串行处理
(2)简单的批处理
(3)多道程序设计
(4)分时系统
3.fork复制进程
fork
是把已有的进程复制一份
,
当然把
PCB
也复制了一份
,
然后申请一个
PID,
子进程的
PID(
父进程的
)+1;
子进程的
PID=
父进程的
PID+1;
如果父子进程想要做不同的事情
,
那么我们通过返回值来判断
;
man fork;
#include <stdio.h>
#include<assert.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char *s=NULL;
int n=0;//控制父子进程的次数
pid_t id=fork();
assert(id!=-1);
if(id==0)//子进程
{
s="child";
n=3;
}
else
{
s="parent";
n=7;
}
//父子进程一起运行
int i=0;
for(;i<n;i++)
{
printf("s=%s ,pid=%d ,ppid=%d n的地址=%p n=%d\n",s,getpid(),getppid (),&n,n);
sleep(1);
}
exit(0);
}
fork是把已有的进程复制,当然把PCB复制了一份,然后申请一个PID,子进程的PID(父进程的)+1
子进程PID=父进程PID+1
如果父子进程想要做不同的事,那我们通过返回值来判断
man fork
获取进程PID 子:getpid() 父getppid()
注:程序中看到的都是逻辑地址
逻辑地址一样,所以地址一样,物理地址不一样,所以值不一样
2034是什么?bash
现有bash再有父进程再有子进程,bash是源头