Linux进程四要素: a、有一段程序供其执行,该程序不一定是专有,可与其他公用。 b、进程有专用的内核空间堆栈。 c、在内核中有一个task_struct数据结构,即进程控制块PCB,有了PCB,进程才能成为内核调度的一个基本单位接收内核的调度。 d、有独立的用户空间。 linux进程状态 进程调 ...
分类:
系统相关 时间:
2016-05-25 16:39:02
阅读次数:
141
一、基础知识1、linux操作系统,熟悉常用的指令。2、vim编译器的使用,Makefile的编写。3、用户以及权限方面相关的知识。4、linux下环境变量的概念。二、进程概念相关1、进程的概念,了解PCB的概念,以及task_struct结构体。2、进程的创建,fork()与vfork()的区别和联系。3、进..
分类:
系统相关 时间:
2016-05-13 15:39:52
阅读次数:
278
#include
#include
#include
#include "ioctl_led.h"
#define DEV_NAME "test-dev"
volatile bool empty = true;
//定义一个进程资源的指针变量
struct task_struct *task;
int test_open(struct inode *inode, struct file ...
分类:
系统相关 时间:
2016-05-13 15:08:20
阅读次数:
212
日期
内核版本
架构
作者
GitHub
CSDN 2016-05-12
Linux-4.5
X86 & arm
gatieme
LinuxDeviceDrivers
Linux-进程管理与调度
Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内...
分类:
系统相关 时间:
2016-05-13 15:01:41
阅读次数:
383
1. 线程与进程的异同点
A.相同点
1): 比如都有自己在系统中唯一标识ID,一组寄存器(pc指针),状态(6种),调度优先级以及所要遵循的调度策略。
2): 每个进程都有一个进程控制块,线程也拥有一个线程控制块(在Linux内核,线程控制块与进程控制块用同一个结 构体描述,即struct task_struct),这个控制块包含线...
分类:
编程语言 时间:
2016-05-12 15:34:12
阅读次数:
243
前两讲我们介绍了fork()系统调用以及execve()内核函数(注:所有的库函数exec*都是execve的封装例程)。
简单回顾一下fork()系统调用(传送门:fork()到底干了啥?):
进程调用fork()创建一个新的进程,新进程复制了父进程的task_struct(PCB,process control block,进程控制块),以及tas...
分类:
系统相关 时间:
2016-05-07 11:08:07
阅读次数:
193
进程—进程调度(1)上下文切换
进程可以调度,但必须保证每个进程都可以顺序的执行,而一个进程执行所需的全部信息可由进程的PCB(task_struct)维护,所以在进程发生切换的时候可以将当前进程的运行状态信息(快照)保存到它的PCB中(这样就能在下一次调度程序选择到它时接着上一状态继续执行),将马上要执行的进程的运行状态信息(在PCB中)恢复,这样就可以合理的完成调度,这个过程就叫上下文切换。...
分类:
系统相关 时间:
2016-05-04 13:30:56
阅读次数:
642
由一个struct里的member(成员)的指针得到这个struct的指针,从而可以得到这个struct的其他成员。 通过这种方法,Linux内部就不需要维护一个task_struct的双向链表了,只需要维护task_struct里面的某个成员的双向链表,效果等同于一个task_struct的双向链 ...
分类:
系统相关 时间:
2016-05-01 21:39:22
阅读次数:
363
1. Each process in Linux has two stacks, a user stack and a kernel stack (8KB by default) 2. thread_info is architecure dependent but task_struct is ...
分类:
系统相关 时间:
2016-05-01 20:20:56
阅读次数:
191
1. 目的Linux 内核通过定期检查并且预先将若干页面换出, 实现减轻系统在缺页异常时候所产生的负担。 虽然, 无法避免需要临时寻找可以换出的页面, 但是, 可以减少这种事件发生的概率。Linux 内核中设置一个专门用来定期将页面换出的线程 kswapd。
kswapd 相当于一个进程 有自己的进程控制块 task_struct 结构, 但是呢, 他没有自己独立的地址空间, 我们可以将它理解为是...
分类:
系统相关 时间:
2016-04-12 17:39:22
阅读次数:
395