随笔分类 -  linux进程与线程

线程的同步和互斥
摘要:多线程共享一个进程的地址空间虽然线程间通信容易进行,但是多线程同时访问共享对象时需要引入同步和互斥机制。同步指的是多个任务按照约定的顺序相互配合完成一件事情,dijkstra基于信号量的概念提出了一种同步机制。由信号量赖决定线程是继续运行还是阻塞等待。信号量代表某一类资源,其值表示系统中该资源的数量信号量是一个受保护的变量,智能通过三种操作来访问:初始化 P操作(申请资源),V操作(释放资源),信号量的值为非负整数P操作的含义: if(信号量的值大于0) { 申请资源的任务继续运行; 信号量的值减去1; } else { 申请资源的任务阻塞; }v操作的含义: if(没有... 阅读全文
posted @ 2012-07-04 21:48 孟浩依然 阅读(9042) 评论(0) 推荐(0)
线程的基本概念和操作
摘要:系统为每个用户进程创建一个task_struct 来描述该进程,该结构体包含了一个指针指向该进程的虚拟地址空间映射表。实际上task_struct和地址空间映射表一起用来表示一个进程。由于进程的地址空间是私有的,因此在进程间上下文切换时,系统开销比较大,为了提高系统的性能,许多操作系统规范里引入了轻量级进程的概念,即线程在同一个进程中创建的线程共享该进程的地址空间,Linux里同样用sask_struct来描述一个线程,线程和进程都参与统一的系统调度。通常线程是指共享相同地址空间的多个任务。使用线程的优势:大大提高了任务切换的效率,避免了额外的TLB&cache的刷新多线程通过第三方的 阅读全文
posted @ 2012-07-04 21:46 孟浩依然 阅读(446) 评论(0) 推荐(0)
linux的进程学习
摘要:wait函数和waitpid函数,函数原型: pid_t wait(int *status )status是一个整型指针,指向的对象用来保护子进程退出时的状态。例如: pid = wait(&status)这status假设为 0x0400,说明 第一个字节保存的是中断信号的编号,倒数第二个字节是保存exit()中的数字。函数的返回值成功返回的是子进程的进程号,失败返回-1;调用wait函数的意义是使进程阻塞,直到任意一个子进程结束或者是该进程直接收到一个信号为止。如果该进程没有子进程或者其子进程已经结束,wait函数会立即返回。waitpid(pid_t pid,int * stat 阅读全文
posted @ 2012-06-28 22:52 孟浩依然 阅读(330) 评论(0) 推荐(0)
linux学习总结进程与线程——exec函数族
摘要:exec提供了一种在进程中启动另外一个程序的执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段。在执行完之后,原调用进程的内容除了进程号外,其他全部都被替换了。1.可执行文件查找方式exec族中的函数以p结尾的函数可以只给出文件名,系统会自动从环境变量“$PATH”所包含的路径中进行查找。即 结尾不是p的,必须要给出文件的路径,并且最后的参数为NULL;2.参数表传递方式两种方式:逐个列举或是将所有参数通过指针数组传递。以函数名的第五位字母来区分,字母为“l”(list)的表示逐个列举的方式;字母“v”(vertor)的表示将所有参数构造成 阅读全文
posted @ 2012-06-20 19:59 孟浩依然 阅读(1023) 评论(0) 推荐(0)
linux学习总结进程与线程
摘要:进程的概念:进程是一个独立的可调度的任务。是一个程序一次执行的过程。程序是静态的,是保存在磁盘上的指令的有序集合,没有执行的概念。进程是动态的,他是程序执行的过程,包括创建、调度、消亡,是程序执行的各种资源的总和,是资源管理的最小单位。进程包括:正文段+用户数据段+系统数据段(进程控制块PCB)。进程的分类:1.交互进程:由shell控制运行的,可以在前台,也可以在后台运行的。 -ps -ef | grep a.out ./a.out & 后台运行2.批处理进程: 不属于某个终端,它被提交到一个队列中以便顺序执行3.守护进程:在后台运行,在linux启动时开始执行,在系统关闭时候才结束 阅读全文
posted @ 2012-06-19 21:43 孟浩依然 阅读(430) 评论(0) 推荐(0)