摘要: 一、用户态和内核态 内核态和用户态是操作系统的两种运行级别,用于区分不同程序的不同权利。 内核态就是拥有资源多的状态,或者说访问资源多的状态,也称为特权态。相对来说,用户态就是非特权态,访问的而资源将受到限制。如果一个程序运行在特权态,该程序就可以访问计算机的任何资源,它的资源访问权限不受限制。如果 阅读全文
posted @ 2017-08-03 10:42 沙皮狗 阅读(5082) 评论(1) 推荐(3) 编辑
摘要: 一、进程与线程 进程是系统进行资源分配和调度的一个独立单位。用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等,然后就该进程被放入到进程的就绪队列,进程调度程序选择它,为它分配CPU及其他相关资源,该进程就被运行起来。 线程是进程的一个实体,是CP 阅读全文
posted @ 2017-08-03 09:40 沙皮狗 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一、引言通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file)。程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函 阅读全文
posted @ 2017-07-29 12:03 沙皮狗 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 一、const的作用 1.定义常量,使其具有不可变性 2.进行类型检查,防止被意外的修改 3.为函数重载提供参考 1 class A 2 3 { 4 5 void fun(int i){...} 6 7 void fun(int i) const {...} 8 9 }; 4.节省空间,避免不必要的 阅读全文
posted @ 2017-07-29 09:49 沙皮狗 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 一、ASSERT概述 ASSERT()称为断言,c语言中在#include <assert.h>中定义,c++中在#include <cassert>中定义。通常用来判断程序中是否出现了非法数据。 如果ASSERT(express);express的表达式值为false,程序报告错误,终止运行,以免 阅读全文
posted @ 2017-07-29 09:41 沙皮狗 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 一、volatile概述 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址(内存)中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出 阅读全文
posted @ 2017-07-21 21:36 沙皮狗 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 一、概述 在C++中,申请动态内存与释放动态内存用new/delete 与 malloc/free都可以,而且他们的存储方式相同,new/malloc申请的动态内存位于堆中,无法被操作系统自动回收,需要对应的delete也free释放空间。 malloc/free是C/C++语言的标准库函数,在C语 阅读全文
posted @ 2017-07-21 21:30 沙皮狗 阅读(1644) 评论(0) 推荐(0) 编辑
摘要: 一、Linux体系架构 1、分层思想 2、驱动的上面是系统调用API 3、驱动的下面是硬件 4、驱动自己本身也是分层的 用户——>应用程序(APP)——>API——>驱动——>硬件 二、模块化设计 1、微内核和宏内核 (1)宏内核(又称为单内核):将内核从整体上作为一个大过程实现,并同时运行在一个单 阅读全文
posted @ 2017-07-14 15:59 沙皮狗 阅读(168) 评论(0) 推荐(0) 编辑