[操作系统] 进程和线程
来源:互联网 发布:按键精灵压枪脚本源码 编辑:程序博客网 时间:2024/05/03 10:00
看到百度面试题有道进程和线程的区别,什么是线程安全?于是就想借此机会把进程线程的知识扫了。
一、进程基本概念
1. OS引入进程的概念是为了支持程序的并发执行(在未配置OS的系统中,程序是顺序执行的)。
2. 创建进程及进程控制块PCB
PCB记录了OS所需的、用于描述进程的当前情况及控制进程运行的全部信息[1]。这是教科书版的概念。
当系统创建一个新进程时,就为它建立了一个PCB,进程结束后又回收其PCB,进程于是随之消亡。Windows用CreateProcess创建进程,创建进程后,系统将创建一个进程内核对象(PCB)。然后系统为新进程创建一个线程内核对象。这个主线程执行c /c++运行时启动例程,它由链接器设为应用程序入口,最终调用WinMain或main。。然后系统为新进程创建一个线程内核对象。这个主线程执行c /c++运行时启动例程,它由链接器设为应用程序入口,最终调用WinMain或main。
PCB常被访问,于是常驻内存,系统将所有的PCB组织成若干个链表(或队列),存放在操作系统中专门开辟的PCB区。
PCB中有如下一些信息:
(1)进程标识符;
(2)处理机状态;
实际上是寄存器的信息:通用寄存器,指令寄存器,程序状态字PSW,用户栈指针。
(3)进程调试信息;
(4)进程控制信息。
二、进程的同步
首先区别进程同步和线程同步,线程是进程的更小的CPU分配单位,所以在某种意义上,进程同步与线程同步是一回事(除当同步线程在同一进程中)。
1. 互斥量;
2. 信息量;
利用PV原子操作操作临界资源S。wait使S=S-1,signal使S=S+1。信号使用不当会导致死锁。
三、进程间通信
实际上,进程的同步是“低级”的进程间通信,因为交换的数据少。
1. 共享存储器系统
2. 消息传递系统
3. 管道系统
4. Windows下的同步
Windows下可以使用共享内存,命名管道,WinSock,Mailslot通信,也可以使用COM/DCOM/RPC。
(1)共享内存
Windows下使用共享内存涉及到的Win32 API:
CreateFileMapping();MapViewOfFile();UnMapViewOfFile();CloseHandle();
四、线程的基本概念
为什么要引入线程呢?由于系统在创建进程时,必须为它为本除处理机外的所有资源,故而进程的创建,撤消及切换都需较大代价。于是,提出线程,作为更小的实体。
参考:
1. 《计算机操作系统》
2. http://www.codeproject.com/Articles/13724/Windows-IPC
- [操作系统] 进程和线程
- 【操作系统】进程和线程
- 操作系统进程和线程概念
- 操作系统之进程和线程
- 操作系统之进程和线程
- 操作系统-进程和线程管理
- 操作系统之进程和线程进程篇
- 操作系统(二):进程和线程管理_1_进程、线程
- Symbian操作系统中的线程和进程
- Symbian--操作系统中的线程和进程
- 操作系统进程和线程概念(转载)
- 操作系统进程和线程概念(转载)
- java线程和操作系统进程的关系
- 操作系统拾遗之进程和线程
- 图解操作系统中进程和线程关系
- 【操作系统】进程和线程的区别
- 操作系统学习基础-进程和线程
- 【操作系统】——作业、进程和线程
- 使用mysql c的问题
- 自动机
- hdu/hdoj 1232 畅通工程---并查集
- freeglut CreateWindow做了些什么
- Java语言的动态性支持
- [操作系统] 进程和线程
- 杭电2079-选课时间(题目已修改,注意读题)
- UVa 10160 - Servicing Stations
- 设计模式之Iterator
- POJ 3370 Halloween Treats
- MongoDB自学笔记4---2.2 windows平台的安装
- zoj 2619 KMP+高斯消元+概率求期望
- 数据库子查询
- 数位dp hdu3555