`
longxj
  • 浏览: 101878 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

process state & process queue

阅读更多

linux process有以下几种状态:
1.TASK_RUNNING
2.TASK_INTERRUPTIBLE
3.TASK_UNINTERRUPTIBLE:这个跟上个状态的不同的地方在于处于这种状态的process是不可以被signal唤醒的
4.TASK_STOPPED
5.TASK_TRACED(当进程被debbuger停止时)
6.EXIT_ZOMBIE:当进程的父进程未进行wait()或waitpid()系统调用时
7.EXIT_DEAD

处于EXIT_STOPPED,EXIT_ZOMBIE,EXIT_DEAD的进程不处于任何队列中,而是由其父进程进行处理。
处于TASK_RUNNING状态的进程被按照优先级放于不同的队列中
处于TASK_INTERRUPTIBLE,TASK_UNINTERRUPTIBLE状态的进程按其等待的事件的不同放于不同的等待队列中。
每个等待队列中,nonexclusive进程放在队列前头,exclusive的进程放在队列的后面,所以每个事件会唤醒所有的nonexclusive进程,但是只会唤醒一个
exclusive进程。
2009/01/16 五

分享到:
评论

相关推荐

    操作原理 设备的添加申请删除和归还

    SDT[i].SDT_dct->DCT_coct->COCT_queue = (struct process *)malloc(sizeof(struct process)); SDT[i].SDT_dct->DCT_coct->COCT_queue = process_apply; }else{ process_p = SDT[i].SDT_dct->DCT...

    PCB.rar_pcb怎么做c++_pcb怎么用c++做

    PCB currentProcess = readyQueue.front(); readyQueue.pop(); // 执行进程currentProcess // ... } } ``` 为了模拟进程的创建、阻塞和唤醒,还需要实现相应的函数。例如,创建进程可以将新PCB插入到就绪队列...

    erlang-task-queue:Erlang 任务队列行为

    Erlang 任务队列行为模块示例: -module(bruteforce_worker).-behaviour(task_queue).-export([ init/1, process_task/2, terminate/2, code_change/3 ]).-record(state, {}).init(_Args) -> #state{}.process_task...

    c#实现操作系统进程调度演示

    Process current = queue.Dequeue(); // 模拟进程运行 RunProcess(current); } } ``` 短作业优先(SJF)算法需要根据进程的执行时间来排序: ```csharp public void SJF(ProcessQueue queue) { queue.Sort(...

    linux_own-wait-queue

    4. 唤醒等待进程:通过调用`wake_up_process()`或`wake_up_all()`函数可以唤醒等待队列中的一个或所有进程。 三、C语言实现 在标签"C"的上下文中,实现等待队列通常涉及到操作系统的系统调用和内核API。例如,`...

    操作系统课件

    The CPU scheduler plays a pivotal role in this process by selecting a process from the ready queue to execute. Ready queues can be implemented using various data structures such as First-In, First-Out...

    Process Management in Linux

    - **`wakeup_process` 函数**:当某个进程的状态发生变化时,比如从等待状态变为就绪状态,这个函数会被调用来更新调度器的状态。 #### 四、中断处理 中断处理是操作系统中一个极其关键的部分,它负责响应外部事件...

    时间片轮转算法的实现

    Process dequeue(Node** queue); ``` 3. **时间片分配**:设置一个全局变量表示时间片的大小,例如`int quantum = 10;`,然后为每个新进程分配这个数量的时间片。 4. **主循环**:在主循环中,我们将执行以下操作...

    flink调优之RocksDB设置.doc

    -Dyarn.application.queue=test \ -Djobmanager.memory.process.size=2048mb \ -Dtaskmanager.memory.process.size=4096mb \ -Dtaskmanager.numberOfTaskSlots=2 \ -Dstate.backend.latency-track.keyed-state-...

    LINUX内核信号量设计与实现

    wake_up_process(&sem->wait); } } void __down(struct semaphore *sem) { struct task_struct *current = get_current(); DECLARE_WAITQUEUE(wait, current); add_wait_queue(&sem->wait, &wait); set_task_...

    Object-Oriented Analysis and Design 第六章

    - Command pattern encapsulates a request as an object, enabling you to parameterize clients with different requests, queue or log requests, and support undoable operations. - Interpreter pattern ...

    C++写的多级反馈队列代码

    - `char state`: 当前状态(等待 W、运行 R、完成 F)。 - `int count`: 周期计数器。 - `struct node* next`: 指向下一个PCB的指针。 2. **ReadyQueue:** 就绪队列结构体,用于组织具有相同优先级的进程。 - `...

    网络编程 ip数据报分析流程

    1. **tcp_data_queue/tcp_urg/tcp_ack/tcp_replace_ts_recent/tcp_sequence/\_\_tcp_v4_hash/tcp_rcv_state_process/tcp_create_openreq_child/tcp_v4_syn_recv_sock/tcp_check_req**:这些函数涉及到TCP连接的建立...

    【计算机】十大经典算法.pdf

    state = get state from queue process(state) ``` **复杂度分析**: - **时间复杂度**:O(V+E),其中V是顶点数,E是边数。 - **空间复杂度**:广度优先搜索的空间复杂度取决于每层的节点数。如果搜索树有k层,...

    作业单道SJF,C++实现

    priority_queue*, vector*>, less2> q1; // 创建并初始化作业 JCB* proc1 = new JCB("process1", 'W', 0, 4, 0); JCB* proc2 = new JCB("process2", 'W', 1, 5, 0); JCB* proc3 = new JCB("process3", 'W', 2,...

    C & C++ Win32 API Programming

    2. **Documentation**: Microsoft provides extensive documentation on the Win32 API, which can be a valuable resource throughout the learning process. 3. **Tools and Compilers**: Familiarize yourself ...

    LINUX 内核信号量设计与实现

    wake_up_process(wake_exclusive_head(&sem->wait)); } } ``` #### 三、LINUX内核信号量在不同平台上的通用实现 虽然上述示例是在x86平台上进行的,但信号量的基本原理在其他平台上也是适用的。对于不同平台,...

    android init启动分析

    service zygote /system/bin/app_process -X zygote /system/bin --zygote --start-system-server socket zygote stream 666 onrestart write /sys/android_power/request_state wake onrestart write /sys/...

    多级反馈队列调度算法 C语言模拟实现

    - **ProcessCreate()**:创建进程并初始化其控制块,将其放入相应的就绪队列。 - **MultiDispatch()**:核心调度函数,负责选择合适的进程进行调度,并处理进程在队列间的迁移。 - **RoundRun()**:执行单个时间片的...

Global site tag (gtag.js) - Google Analytics