进程概念
一个程序文件(program),只是一堆待执行的代码和部分待处理的数据,他们只有
被加载到内存中,然后让 CPU 逐条执行其代码,根据代码做出相应的动作,才形成一个真
正“活的”、动态的进程(process),因此进程是一个动态变化的过程,是一出有始有终
的戏,而程序文件只是这一系列动作的原始蓝本,是一个静态的剧本。
进程状态

相关重要 API
这个函数接口本身非常简单,简单到连参数都没有,但是这个函数有个非常与众不同的
地方:他会使得进程一分为二!就像细胞分裂一样!!!
进程间通信
进程间的通信(IPC)方式,总归起来主要有如下这些:
1,无名管道(PIPE)和有名管道(FIFO)。
2,信号(signal)。
3,system V-IPC 之共享内存。
4,system V-IPC 之消息队列。
5,system V-IPC 之信号量。
6,套接字
例子————无名管道
int main(int argc,char **argv)
{
int fd[2];
if(pipe(fd)==-1){
perror("pipe()");
exit(1);
}
pid_t x=fork();
if(x==0)
{
char *s="hello";
write(fd[1],s,strlen(s));
}
if(x>0){
char buf[30];
bzero(buf,30);
read(fd[0],buf,30);
printf("from child:%s",buf);
}
close(fd[0]);
close(fd[1]);
return 0;
}
线程基本概念
线程实际上是应用层的概念,在 Linux 内核中,所有的调度实体都被称为任务(task),他们之间的区别是:有些任务自己拥有一套完整的资源,而有些任务彼此之间共享一套资源。

左边是一个标准进程,他拥有自己的一套完整的资源——包括内存空间、
文件、信号挂起队列等等,这些资源全部由 PCB(即内核结构体 task_struct)统一管理,
这整一套数据结构,以及他们的动态变化就是一个进程。
对于右边,可以看到有两个 PCB 结构体共享很多资源,而一个 PCB 对应系统中的一个
任务,是系统调度器的调度对象,系统在调度的时候并不关心这些 PCB 究竟是独立拥有一
套资源还是跟别人共享,因此右边的多个调度实体(线程)的进程就比单个调度实体的进程
可以获得更多的 CPU 资源来管理和操作他们的资源。这是多线程给我们的最初的印象。
但线程给我们的不止这些,虽然一个进程内部的多条线程共享了大部分资源,但是还是
有一些信息是各自独立的——比如其运行状态,当一个线程处于睡眠的时候,另一条线程可
以正在运行,而或许有些线程已经变成僵尸了!就像一个人是如果是多线程的,他就可以做
到一边睡觉一边吃饭一边在洗澡!正是利用线程状态独立的特征,程序才有可能一遍阻塞等
待,一遍干别的事情,尽最大可能榨取处理器资源。
第一个必须知道的 API 是线程的创建:


网硕互联帮助中心

![XPipe: 轻松访问你的服务器基础设施 [特殊字符]-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/01/20260122014055-697180279d539-220x150.png)



评论前必须登录!
注册