![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 86
Denkensk
这个作者很懒,什么都没留下…
展开
-
Linux 进程
进程标识每个进程都有一个非负整型表示的唯一进程ID,因为进程ID标识符总是唯一的,常将其用作其他标识符的一部分以保证其唯一性。虽然是唯一的,但是进程ID是可服用的,当一个进程终止后,其进程ID就成为服用的候选者。系统中有一些专用的进程:ID为0的进程通常是调度进程(常常被称为交换进程swapper)。该进程是内核的一部分,它不执行任何磁盘上的程序。ID为1通常是原创 2014-12-18 08:54:28 · 447 阅读 · 0 评论 -
线程间同步机制----读写锁
一、读写锁基本原理读写锁与互斥锁类似,不过读写锁运行更高的并行。互斥量要么锁住状态,要么就是不加锁状态,而且一次只有一个线程可以对其加锁。读写锁可以有3中状态:读模式下加锁状态,写模式下加锁状态,不加锁状态。一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。(1)当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的进程都会被阻塞。(2原创 2014-12-25 11:14:43 · 1192 阅读 · 0 评论 -
线程间同步机制----条件变量
一、条件变量基本原理条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个二、条件变量基本操作三、条件变量应用实例原创 2014-12-24 11:51:26 · 590 阅读 · 0 评论 -
线程间同步机制----互斥锁
一、互斥锁通信机制互斥以排他方式防止共享数据被并发修改。互斥量从本质来说是一把锁,是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),在访问共享资源前对互斥量进行设置(加锁),在访问完成后释放(解锁)互斥量。(1)在访问该资源前,首先申请该互斥锁,如果该互斥锁处于开锁状态,则申请到该锁对象,并立即占有该锁(使该锁处于锁定状态),以防止其他线程访问该资源;如果该互斥量处于锁定状态原创 2014-12-24 08:36:54 · 735 阅读 · 0 评论 -
Linux面试题汇总答案
一.填空题:1. 在Linux系统中,以 文件 方式访问设备 。2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。3. Linux文件系统中每个文件用 i节点 来标识。4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。5. 链接分为: 硬链接 和 符号链接 。6. 超级块包含了i节点表 和 空闲块表 等重要转载 2015-02-28 17:52:49 · 766 阅读 · 0 评论 -
进程的基本状态及其转换
进程的基本状态: 1、就绪(Ready)状态 当进程已分配到除CPU以外的所有必要资源后,只要在获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。 2、执行状态 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;再多处理机系统中,则有多个进程处于转载 2015-03-04 20:37:54 · 1176 阅读 · 0 评论 -
一个fork的面试题
文/陈皓 前两天有人问了个关于 Unix 的 fork ()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:#include #include #include int main (void){ int i; for(i=0; i<2; i++){ fork ();转载 2015-03-04 20:21:33 · 346 阅读 · 0 评论 -
Valgrind简单用法
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,转载 2015-03-08 23:15:05 · 378 阅读 · 0 评论 -
Visual C++内存泄露检测—VLD工具使用说明
一. VLD工具概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。 二. VLD下载http://www.codeproject.转载 2015-03-08 23:18:21 · 612 阅读 · 0 评论 -
4种常用的linux命令
NetstatNetstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Fo原创 2015-03-06 20:54:35 · 557 阅读 · 0 评论 -
线程间同步机制----信号
线程拥有与信号相关的私有数据——线程信号掩码,这就决定了线程在信号操作时具有以下特性:(1)每个线程可以先别的线程发送信号。pthread_kill()函数用来完成这一操作。(2)每个线程可以设置自己的信号阻塞集合。pthread_sigmask()函数用来完成这一操作,其类似于进程的sigprocmask()函数。(3)每个线程可以设置针对某个信号的处理方式,但同一进程中对某信号的处原创 2014-12-25 18:37:32 · 1059 阅读 · 0 评论 -
进程间通信----共享内存
一、共享内存的IPC原理共享存储允许两个或多个进程共享一给定的存储区。因为数据不需要在客户机和服务器之间复制,所以这是最快的一种IPC。使用共享存储的唯一窍门是多个进程之间对一给定存储区的同步存取。若服务器将数据放入共享存储区,则在服务器做完这一操作之前,客户机不应当去取这些数据。共享内存的数据结构:两个进程在使用此共享内存空间之前,原创 2014-12-23 10:40:28 · 633 阅读 · 0 评论 -
【图解】Linux下C程序进程地址空间布局
作者:沧海猎人 出处:http://blog.csdn.net/embedded_hunter 转载请注明出处 嵌入式技术交流QQ群:179012822我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(Block Started by Symbol) 、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程转载 2014-12-18 22:17:41 · 698 阅读 · 0 评论 -
进程间通信----管道
PIPE:无名管道#include int pipe(int fd[2]); //返回值:若成功,返回0,若出错,返回-1经由参数fd返回两个文件描述符:fd[0]为读而打开,fd[1]为写而打开。fd[1]的输出是fd[0]的输入。#include #include #include int main(int argc, char *argv[]){原创 2014-12-19 08:35:00 · 416 阅读 · 0 评论 -
进程间通信----消息队列
一、XSL IPC1、key值和ID值Linux系统为每个IPC机制都分配了唯一一个ID,所有针对IPC机制的操作都使用对应的ID。为了通信的双方获得ID值,IPC在实现时约定使用key值作为参数创建,如果在创建时使用相同的key值将得到同一个IPC对象的ID,这样就保证了双方可以获取用于传递参数的IPC机制ID值。key值为一个32位的整型数据。为了尽可能的与系统信息原创 2014-12-22 08:38:16 · 502 阅读 · 0 评论 -
进程间通信----信号
一、信号的介绍信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了那些系统事件。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递个它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞取消时才被传递给进程。原创 2014-12-19 16:21:44 · 540 阅读 · 0 评论 -
进程与线程的区别和联系
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了转载 2014-12-18 22:35:00 · 363 阅读 · 0 评论 -
Linux 线程
每个线程都包含有表示执行环境所必须的信息,其中包括进程中标识线程的线程ID、一组寄存器值、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程私有数据。一个进程的所有信息对该进程的所有线程都是共享的,包括可执行程序的代码、程序的全局内存和堆空间、栈以及文件描述符。1、线程标识进程ID在整个系统中是唯一的,但线程ID不同,线程ID只有在它所属的进程上下文中才有意义。#include原创 2014-12-18 11:21:56 · 456 阅读 · 0 评论 -
关于Linux的进程和线程
什么是进程直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位。什么是线程线程存在与进程当中,是操作系统调度执行的最小单位。说通俗点,线程就是干活的。进程和线程的区别与联系如果说进程是一转载 2014-12-18 22:38:47 · 340 阅读 · 0 评论 -
进程间通信----信号量
一、信号量IPC原理信号量与已经介绍过的IPC机构(管道、FIFO以及消息列队)不同。它是一个计数器,用于多进程对共享数据对象的存取。为了获得共享资源,进程需要执行下列操作:(1) 测试控制该资源的信号量。(2) 若此信号量的值为正,则进程可以使用该资源。进程将信号量值减1,表示它使用了一个资源单位。(3) 若此信号量的值为0,则进程进入睡眠状态,直至信号量值大于0。若进程原创 2014-12-22 15:39:39 · 1149 阅读 · 0 评论 -
对进程地址空间的一点认识
在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一 早期的内存分配机制在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存的大小。那当程序同时运行多个程序时,转载 2014-12-18 18:47:13 · 496 阅读 · 0 评论 -
Linux的进程/线程通信方式总结
Linux系统中的进程通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式 * RPC: Re转载 2015-03-08 16:30:46 · 478 阅读 · 0 评论