嵌入式Linux中文站

设置Linux进程的睡眠和唤醒

阅读(63)

在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。 当然,一个进程也可以主动释放CPU的控制权。函数 schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU。一旦这个主动放弃CPU的进程被重新调度占用 CPU,那么它将从上次停止执行的位置开始执行,也就是说它

关于 Linux 进程你所需要知道的一切

阅读(149)

在这篇指南中,我们会逐步对进程做基本的了解,然后简要看看如何用特定命令管理 Linux 进程。 进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。 进程的类型 在 Linux 中主要有两种类型的进程: 前台进程(也称为交互式进程) 这些进程由终端会话初始化和控制。换句话说,需要有一个连接到系统中的用户来启动这样的进程;它们不是作为系统功能/服务的一部分自动启动。 后台进程(也称为非交互式/自动进程) 这些进程没有连接到终端;它

僵尸进程

阅读(176)

在UNIX系统中,僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误或收到终止信号所致)但在操作系统的进程表中仍然有一个表项(进程控制块PCB),处于 终止状态的进程。这发生于子进程需要保留表项以允许其父进程读取子进程的exit status:一旦退出态通过wait系统调用读取,僵尸进程条目就从进程表中删除,称之为回收(reaped)。正常情况下,进程直接被其父进程 wait 并由系统回收。进程长时间保持僵尸状态一般是错误的并导致 资源泄漏。 英文术语zombie process源自en:z

父进程和子进程

阅读(208)

父进程 在计算机领域,父进程( 英语: Parent Process)指已创建一个或多个子进程的进程。 UNIX 在UNIX里,除了 进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。 操作系统内核以进程标识符(Process Identifier,即PID)来识别进程。进程0是系统引导

多线程是什么?锁是什么?信息量是什么?以及各自的用处

阅读(104)

线程的概念: 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每

Linux系统进程环境

阅读(151)

进程的启动和终止 内核执行c程序时,利用exec函数调用一个特殊的启动例程,该启动例程丛内核中获取命令行参数和环境变量值。 进程终止的情况 5种正常终止的情况: (1)从main函数返回;(2)调用 exit ;(3)调用_ exit 和_Exit函数;(4)最后一个线程调用pthread_ exit ;(5)最后一个线程从其启动例程返回; 3种异常终止情况 ( 1 )调用 abort ;( 2 )接到一个信号;( 3 )最后一个线程对取消请求做出响应; 进程启动和终止图 atexit函数 一个进程最多可

Linux编程之epoll

阅读(173)

现在有这么一个场景:我是一个很忙的大老板,我有100个手机,手机来信息了,我的秘书就会告诉我老板,你的手机来信息了。我很生气,我的秘书就是这样子,每次手机来信息就只告诉我来信息了,老板赶紧去看。但是她从来不把话说清楚:到底是哪个手机来信息啊!我可有100个手机啊!于是,我只能一个一个手机去查看,来确定到底是哪几个手机来信息了。这就是IO复用中select模型的缺点!老板心想,要是秘书能把来信息的手机直接拿到我桌子上就好了,那么我的效率肯定大增(这就是epoll模型)。 那我们先来总结一下select模型的

Linux编程之自定义消息队列

阅读(89)

我这里要讲的并不是IPC中的消息队列,我要讲的是在进程内部实现自定义的消息队列,让各个线程的消息来推动整个进程的运动。进程间的消息队列用于进程与进程之间的通信,而我将要实现的进程内的消息队列是用于有序妥当处理来自于各个线程请求,避免一窝蜂的请求而导致消息的异常丢失。想想socket编程里的listen函数吧,里面要设置一个队列长度的参数,其实来自网络的请求已经排成一个请求队列了,只是这个队列是系统帮我们做好了,我们看不到而已。如果系统不帮我们做这个等待队列的话,那就需要我们程序员在应用层实现了。 进程内的