Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31737
  • 博文数量: 6
  • 博客积分: 90
  • 博客等级: 民兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-13 20:41
文章存档

2017年(2)

2011年(4)

我的朋友

分类: C/C++

2011-12-13 20:52:13

进程管理与通信 前两天

基础概念:

进程与程序区别:进程是程序的一次动态执行过程.进程在内存中运行,程序在磁盘中存储.

线程:LWP

后三天

进程的通信

BSD(高校)pipefifo、信号

System Vshare memory、消息队列、信号灯(ftok

BSDSocket

Day1

进程的状态图:

运行态(正在运行和准备运行的)、等待(可中断等待、不可中断等待)、僵尸态、停止态

 

进程命令:ps –aux  top   kill (向特定PID发送信号)、 bg/fg nice/renice

 

创建进程:fork()、vfork()(子进程结束后父进程才开始运行)

创建子进程,(写时拷贝)拷贝数据段、代码 哪些不拷贝?(完整拷贝需要与线程区别

 

退出方式exit(0)return 0 _exit(0);区别_exit(0)不刷新缓冲区。

 

介绍exec函数族,6个函数,函数参数:文件+路径

找到可执行文件,用它来取代原调用进程的数据段、代码、栈。

ls –l /home

execl(“/bin/ls”, “ls”, “-l”, “/home”, NULL);成功返回:无需判断,失败返回-1

 

wait/waitpid:   waitpid(-1, NULL,  0) == wait(NULL)

 

Day2

守护进程:

Fork-àsetsit()----àchdir---àumask(0)-------àclose(fd)

 

一、线程:LWP

pthread_t a_thread;

1、  创建 pthread_create(&a_thread, NULL, thread_function, NULL)

2、  回收pthread_join(a_thread, &result) 调用线程一直阻塞到pthread_exit();

3、  结束当前线程pthread_exit();

4、  删除同一个进程当中的其他线程pthread_cancel(a_thread);

 

二、线程信号量

PV操作:一定需要初始化sem_init(&sem, 0, 0) :最后一个参数是初始值

P操作 sem_wait();

V操作 sem_post();

 

三、线程互斥(mutex

pthread_mutex_t mutex;

初始化:pthread_mutex_init(&mutex, NULL);

加锁:  pthread_mutex_lock(&mutex);

解锁:  pthread_mutex_unlock(&mutex);

互斥和同步信号量的区别?

前者无法保证资源的访问顺序,后者可以,同步是在互斥的基础上保证用户访问顺序,尤其用在所有写入资源的情况下。

Day03

通信:特点、用法

1、  无名管道pipe

只能用在有血缘关系的进程之间的通信、半双工(单方向的数据);

类似于文件IO的读写

int fd[2];

创建:pipefd;fd[0]读、fd[1]

只有一个读端和只有一个写端时

2、  有名管道(FIFO)

类似队列、全双工(可读可写)

创建:mkfifo(path, mode)

打开:open”myfifo”, “r”

利用管道实现C/S模型

3、  信号

唯一的异步方式,软件层面对中断的一种模拟

Kill(pid, int signal)

Signal();

Pause();

Alarm();

常见信号:ctrl+Z  SIGTSTP

 ctrl+C SIGINT

 ctrl+SIGQUIT

Day04

IPC对象,都需要key来产生

查看ipcs  删除ipcrm

1、  共享内存

效率最高

shmget

shmat

shmdt

shmctl

2、  消息队列

消息类型

#define LEN  sizeof(MSG- sizeof(long))

msgget

msgctl

msgsnd

msgrcv

Day05

3、  信号灯集

semget

semctl

semop

} pipe:  具有亲缘关系的进程间,单工,数据在内存中

} fifo:   可用于任意进程间,双工,有文件名,数据在内存

} signal:  唯一的异步通信方式

} msg:常用于cs模式中, 按消息类型访问 ,可有优先级

} shm:效率最高(直接访问内存) ,需要同步、互斥机制

} sem:配合共享内存使用,用以实现同步和互斥

 

 

阅读(1295) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:在linux平台使用QT来编写GUI程序

给主人留下些什么吧!~~