Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。 一般的,进程是不能访问内核的,它不能访问内核所占用内存空间也不能调用内核函数。这被称为保护模式。为...
分类:
系统相关 时间:
2014-11-14 20:59:08
阅读次数:
309
内核调试入门内核程序运行在内核态,因此不能像对用户态应用程序那样来调试。关于内核调试方面的知识请参考《软件调试》这本书。目前内核调试主要有以下三种方法。一是使用硬件调试器,它通过特定的接口(如 JTAG)与 CPU 建立连接并读取它的状态,例如 ITP 调试器。二是在内核中插入专门用于调试的中断处理...
用户进程,在用户态可以被直接 kill 。
用户进程陷入内核,在内核态进入死循环:
1. 循环体中有 msleep_interruptible ,进程状态为S,即可中断的睡眠状态,kill 命令不能杀死进程。
2. 循环体中有 msleep ,进程状态为D,即不可中断的睡眠状态,kill 命令不能杀死进程。
3. 循环体中无 sleep ,进程状态为R,即可执行状态,kill 命令不能杀死...
分类:
其他好文 时间:
2014-11-11 16:46:08
阅读次数:
220
NGINX作为服务端的应用程序,在客户端发出数据后,服务端在做着这样一些处理,数据先会经过网卡,网卡会和操作系统做交互,经过操作系统的协议栈处理,再和不同的应用程序交互。 在这里面涉及两个概念,一个是用户态,一个是内核态。应用程序通过系统调用函数进入内核空间,内核运行进行数据准备和数据拷贝等工...
分类:
其他好文 时间:
2014-11-11 12:04:07
阅读次数:
830
内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而 用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信 任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访...
分类:
系统相关 时间:
2014-11-10 11:23:30
阅读次数:
330
一、页框回收算法
1、为何要有页框回收算法?
Linux在为用户态与内核分配动态内存时,检查得并不严谨。
例如:
(1)、对单个用户创建的进程的RAM使用的总量并不作严格的检查(进程资源的限制只针对单个进程);
(2)、对内核使用的许多磁盘高速缓存和内存高速缓存大小也同样不做限制。
2、为何要减少控制?
可以使内核以最好的可行方式使...
分类:
系统相关 时间:
2014-11-06 13:02:05
阅读次数:
508
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁.如果没有锁了或者超时了, 内核就会启动休眠的那套机制来进入休眠.PowerManager.WakeLock有加锁和解锁两种...
分类:
移动开发 时间:
2014-11-03 22:11:18
阅读次数:
277
一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。 二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号...
分类:
系统相关 时间:
2014-10-31 15:20:26
阅读次数:
310
1,设定进程的最大资源[cpp]view plaincopystructrlimitrlim;rlim.rlim_cur=8192;rlim.rlim_max=8192;if(setrlimit(RLIMIT_NOFILE,&rlim)){ERROR("ErrorsettingRLIMIT_NOFI...
分类:
系统相关 时间:
2014-10-26 09:05:16
阅读次数:
190