- 博客(9)
- 资源 (3)
- 收藏
- 关注
转载 linux用户管理
<br />在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的user ID和group ID同时该帐号的根目录和shell也读了出来。然后在去核对密码表,在/etc/shadow中找出我们刚刚输入的帐号和userID,核对我们输入密码是否正确。一切正确我们可以登录到当前用户shell。那么,
2011-01-26 18:35:00 527
转载 linux线程浅析
<br />原文:http://hi.baidu.com/_kouu<br /><br />关于linux线程<br /><br /> <br />在许多经典的操作系统教科书中, 总是把进程定义为程序的执行实例, 它并不执行什么, 只是维护应用程序所需的各种资源. 而线程则是真正的执行实体. <br />为了让进程完成一定的工作, 进程必须至少包含一个线程. 如图1.<br /><br />进程所维护的是程序所包含的资源(静态资源), 如: 地址空间, 打开的文件句柄集, 文件系统状态, 信号处理handl
2011-01-26 18:27:00 816 1
原创 linux内核的用户管理
在linux 2-6-14的内核版本中task_struct{/* process credentials */uid_t uid,euid,suid,fsuid;gid_t gid,egid,sgid,fsgid;}所以驱动程序中可以调用 current->uid确定当前进程属于的组。但是在 3-6-36 中task_struct 没有以上项目,只有loginuid,如何确定 进程属于的用户组??
2011-01-26 17:59:00 1041 1
转载 异步通知
要弄明白这个问题,我们得从最基本的原理开始。我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。<br />好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的工作。<br />一 驱动方面:<br />1. 在设备抽象的数据结构中增加一个struct fasync_struct的指针<br />2. 实
2011-01-24 17:01:00 531
原创 内核循环队列实现fifo
<br /><br />定义相关结构体<br /> 20 LIST_HEAD(task_queue_head);<br /> 21 struct task_queue{<br /> 22 struct task_struct *sleep_task;<br /> 23 int count;<br /> 24 struct list_head list;<br /> 25 };<br /> <br /> 添加fifo节点<br /><br /> struct
2011-01-20 16:12:00 955
转载 linux 2.6内核 编译模块Makefile
<br />源文件只要一个,编译模块:<br />obj-m := mytest.o<br />KDIR := /lib/modules/$(shell uname -r)/build<br />PWD := $(shell pwd)<br />default:<br /> $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules<br /><br />就可以了,模块的名称是mytest,最后编译出来是mytest.ko,剩下的系统搞定。当然这里有一些隐含规则了
2011-01-18 18:37:00 607
原创 wait queue 笔记
1.正在运行的task从run queue上下来后,被放到wait queue上,从而进入睡眠。typedef struct __wait_queue wait_queue_t;typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key);int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *k
2011-01-17 13:36:00 973
原创 return ERESTARTSYS 作用
ERESTARTSYS is a part of the api between the driver and the signal-handling code in the kernel. It does not reach user-space (provided of course that it's used appropriately in the drivers :) When a driver needs to wait, and get awoken by a signal (as oppo
2011-01-16 14:24:00 2841 1
转载 Linux进程的睡眠和唤醒
<br />1 Linux进程的睡眠和唤醒<br />在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。<br />当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调度函数,它可以被一个进程主动调用,从而调度其它进程占用CPU。一旦这个主动放弃CPU的进程被重新调度占用
2011-01-15 16:50:00 849
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人