自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 嵌入式linux基础教程 第九章 文件系统(1)

文件系统      嵌入式开发者所做的最重要的决定之一就是部署哪种文件系统。有些文件系统性能比较高有些文件系统空间利用率比较高,还有一些文件系统设备故障或者意外断电后恢复数据比较方便。      linux文件系统概念      分区      分区是对物理设备的逻辑划分,而文件系统就存在于这个设备上。一个物理设备可以只包含一个分区,占据所有可用空间,或者,它可以被分成多个分区

2016-12-13 14:34:37 538

原创 嵌入式linux基础教程 用户空间初始化(2)

用户空间初始化       Web服务器启动脚本示例       这个示例很简单但是它可以说明一些机制,指导你设计自己的系统启动和关机行为。这个例子是基于busybox,他和init的初始化行为稍有不同。       在典型的包含Web服务器的嵌入式应用中,你也许会期望系统中有多个服务器,用于系统维护和远程访问。在这个例子中,我们启用了访问HTTP和Telnet的服务器。下面代码显

2016-11-24 21:42:59 788

原创 嵌入式linux基础教程 第六章 用户空间初始化(1)

用户空间初始化       linux内核本身只是任何嵌入式linux系统中的一个很小的组成部分,当内核完成其自身初始化后,它必须挂载一个根文件系统,并执行一组由开发人员定义的初始化历程。本章继续研究继内核初始化之后的系统初始化       根文件系统         Linux和很多其他高级操作系统一样,需要一个根文件系统以充分发挥它的优势。根文件系统是指挂载于文件系统层次结

2016-11-24 15:48:07 934

原创 嵌入式linux基础教程第二版 第五章 内核初始化

第五章      内核初始化        5.1合成内核镜像:Piggy 及其他        make ARCH=arm CROSS_COMPILE=xcale_be- zImage              LD                 vmlinux              SYSMAP       System.map              SYSMAP

2016-11-17 21:41:46 952

原创 嵌入式linux基础教程第二版 第二章续

7.第一个用户空间进程:init       INIT:version 2.86 booting       在上述代码中,直到这个地方内核都在执行自己的代码,他在一个称为内核上下文的环境中完成大量的初始化工作。在这个运行状态下内核拥有所有的系统内存并且全权控制所有的系统资源。内核能够访问所有的物理内存和所有的I/O子系统。他在内核虚拟地址空间中执行代码,使用一个由内核自己创建和支配的栈。

2016-11-03 22:27:13 585

原创 嵌入式linux基础教程第二版 第二章

本章将带您观摩一个典型的嵌入式开发系统的开发环境,重点介绍嵌入式开发的一些组件和概念      1.嵌入和非嵌入             嵌入式系统的一些常见的特性             a.包含一个处理引擎,比如通用微处理器             b.一般针对某种具体的应用或目的而设计的             c.包含一个简单的用户界面             d.

2016-11-03 09:34:44 1110

原创 嵌入式linux基础教程(第二版)第一章

linux已经成为很多设备的操作系统,手机、DVD播放器、电子游戏机、数码相机、网络交换机和无线网络设备、机顶盒、高清电视、蓝光DVD播放器、汽车的信息娱乐中心和很多日常使用的电器等都在使用linux操作系统。linux已经成为很多设备的嵌入式操作系统一.为什么嵌入式设备选择linux     1.linux支持的硬件种类繁多,可以超过任何一种操作系统     2.linux支持非常多

2016-10-20 20:06:55 1188

原创 const 、static、define 、inline、votatile

define的生命周期止于编译器,预处理的时候就替换了。                const的作用:                      (1)用于常量,编译器可以对其进行数据静态类型安全检查。                      (2)void fun(A a);                                void fun(A const &

2016-09-12 14:57:10 537

原创 指针和引用

指针和引用     (1)int a = 10;                int b  = 20;               int &rn = a;              rn = b;              rn是a的一个别名,对rn的赋值其实就是对a的赋值,执行完后a = 20;      (2)int a = 1;               i

2016-09-12 10:31:27 214

原创 因特网路由选择协议之RIP

因特网路由选择协议       路由选择协议:静态路由选择协议和动态路由选择协议。静态路由选择协议叫做非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。适用于简单的小网络。动态路由选择也叫作自适应路由选择,其特点是能较好的使用网络状态的变化,但实现起来较为复杂,开销也比较大。动态路由选择适用于较复杂的大网络。        因为采用的路由选择协议主要是自适应、分布式路

2016-08-04 16:13:18 1866

原创 VFS的索引节点

索引节点       文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构中。文件名可以随时更改,但是索引节点对文件是唯一的,并且随文件的存在而存在。具体文件系统的索引节点是存放在磁盘上的,是一种静态数据结构,要使用他必须调入内存,填写VFS的索引节点,因此,也称VFS索引节点是动态节点。       VFS索引节点数据结构主要域有       struct inode

2016-07-16 11:27:30 1293

原创 文件系统简介及软硬连接

文件系统     文件:存放一切数据化信息的仓库     文件系统:文件系统对文件的管理,如同国家对人民的管理一样     LINUX的文件分为:常规文件、目录文件、设备文件、管道文件、连接文件     文件的存取权限和文件模式     为了保护文件信息的安全,LINUX设置了文件保护机制,其中之一就是给文件都设定了一定得访问权限。当文件被访问时,系统首先检验访问者的权限,只有

2016-07-15 11:47:56 431

原创 IPC之共享内存(2)

在内存映射文件中给计数器持续加1       本程序的目的是使父子进程之间共享存放着计数器的一个内存区        int main()       {            int fd, i, nloop, zero = 0;            int *ptr;            sem_t *mutex;            if(argc !=

2016-07-14 11:58:34 282

原创 IPC之共享内存(1)

共享内存       共享内存区是可用的IPC形式中最快的。一旦这样的内存区映射到共享他的进程的地址空间,这些进程间的数据传递就不再涉及内核。然而往共享内存区存放信息或者从共享内存区取走信息通常需要某种形式的同步。互斥锁,条件变量,读写锁,记录上锁和信号量都可以用于这种同步。        一般的进程间通信与共享内存区的区别:                       通过管

2016-07-14 11:28:30 405

原创 管道和FIFO

管道和FIFO    管道和FIFO是许多应用程序的基本构建模块。管道普遍用于shell中,不过也可以从程序中使用,往往用于从子进程向父进程回传消息。     FIFO与管道类似,但他们是用mkfifo创建,之后需要用open打开。打开管道必须小心,因为许多规则制约着open的阻塞与否     管道和FIFO的特征之一是他们的数据是一个字节流,类似于TCP连接。把这种字节流分割成各个记

2016-07-06 16:44:16 342

原创 IPC概述

IPC       IPC(运行在某个操作系统上的不同进程间的各种消息传递)进程间通信是UNIX域一个杂乱不堪的领域,虽然有各种各样的解决办法,但没有一个是完美的。我们主要讨论四个领域     (1)消息传递(管道、FIFO、消息队列)     (2)同步(互斥锁、条件变量、读写锁、信号量)     (3)共享内存区(匿名共享内存区、有名共享内存区)     (4)过程

2016-07-05 11:52:19 539

原创 ICMP应用之PING和traceroute

ICMP应用之PING和traceroute       PING:       ICMP的一个重要应用是PING,用来测试两个链接之间的联通性。PING是应用层直接使用网络层ICMP的一个例子。,不通过传输层。PING发送的是回送请求报文,服务器如果正常工作的话会回复回送应答报文。往返的ICMP上有时间戳,因此可以计算出往返时间。最后可以得出发送到哪个机器的IP地址,发送的、收到

2016-07-02 10:55:45 2165

原创 IP层关联协议之ICMP

ICMP     ICMP是IP层协议(曾经被面试官问到的问题我不知道,个哈哈哈哈),他的使用是为了有效地转发数据报和提高交付成功的机会。ICMP作为IP层数据报的数据,加上数据报的首部,组成ICMP报文发送出去。ICMP允许主机或者路由器报告差错情况和提供有关异常情况的报告。        ICMP报文的种类:ICMP差错报告报文和ICMP询问报文        ICMP差错

2016-07-02 10:17:15 1394

原创 IP层关联协议之ARP&RARP

ARP&&RARP        ARP:根据机器的IP地址找到他的物理地址。解决同一个局域网上的主机或者路由器的IP地址和硬件地址的映射问题。        RARP:根据机器的物理地址找到他的IP地址。        DHCP协议包含了RARP协议的一些内容,因此RARP没有人单独使用RARP协议。重点介绍ARP协议。        大家都知道在网络层使用IP地址,但在实际的网

2016-07-01 16:50:58 1030

原创 IP层存在的原因是因为异构网络的存在

网络层      在计算机通信中,可靠交付应该由谁负责?是端系统还是网络?这曾是一个备受争议的话题。       在传统的电信网中,因为终端极为简单因此网络层负责可靠交付,这是一种面向连接的通信,一种可靠的无丢失无重复的通信。但是缺点是要在网络中建立一条虚电路。        因特网的思想是:网络层向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。也就是网络层不提供服务

2016-07-01 15:55:28 2249

原创 进程(4)

进程调度        进程调度的实质是资源的分配        进程调度算法及其基本原理       (1)时间片轮转调度算法        系统将所有可运行的进程按照先来先服务的原则排成一个队列,每次调度时把CPU分配给队首进程,并令其执行一个时间片。当执行的时间片用完时,系统发出信号通知调度程序,调度程序便根据此信号来停止进程的运行,并将它送回到就绪队列的末尾,等待下一次执行

2016-06-29 10:28:38 301

原创 进程(3)

linux系统中进程的组织方式         一个系统中通常可以有数百个数千个进程,相应的也就有这么多的PCB,必须使用一些适当的方式将这些PCB组织起来。进程的组织方式其实大都是数据结构中数据的组织方式。         进程链表:双向循环链表将进程联系起来         struct task_struct         {              stru

2016-06-29 08:52:41 258

原创 进程(2)

进程介绍      1.程序和进程

2016-06-28 10:29:25 272

原创 简单的并发服务器

简单的并发服务器UNIX下编写简单的并发服务器最简单的方法就是fork一个子进程来服务每个客户。pid_t    pid;int  listenfd, connfd;listenfd =  socket();bind(listenfd, );listen(listenfd, LISTENQ)for(;  ;){       connfd = accpet(lis

2016-06-25 15:57:18 285

原创 基本TCP套接字函数

基本的TCP套接字编程函数1.socket函数

2016-06-25 15:40:26 1764

原创 为什么是三次握手而不是两次握手为什么是四次挥手

为什么是三次握手捏:::         三次握手可以简单看做是客户发送请求,服务器对客户的请求进行确认,客户对服务器的确认再进行确认。         如果采用两次握手,假设下面这种情况,客户向服务器发送请求,服务器没有对客户的请求进行确认(因为网络的延迟他可能没有收到这个请求)。客户收不到这个确认于是过一段时间他在向服务器发起连接请求并顺利完成数据传输,但是过了一段时间这个请求到达了服

2016-06-07 09:49:59 4851 3

原创 TIME_WAIT状态存在的必要性

TIME_WAIT状态        是谁有TIME_WAIT状态呢

2016-06-06 20:22:13 1590

原创 三路握手和四次挥手

这是我在书上拍的图大家凑合看,图虽不漂亮但是内容好啊      服务器调用socket,bind,listen,后处于LISTEN状态(桢听来自远方TCP端口的连接请求)。称之为被动打开。      客户端通过调用connect激发三路握手,调用connect后处于SYN_SENT状态(在发送连接请求后等待匹配的连接请求)。这将导致TCP发送一个SYN分节,他告诉服务器将在待建立的

2016-06-06 19:42:15 267

原创 应用程序写数据到套接字

tcp输出       每个TCP套接字都有一个发送缓冲区,可以用SO_SENDBUF套接字选项来更改该缓冲区的大小。       当某个应用程序调用write时,内核从该应用进程缓冲区中复制所有数据到套接字的发送缓冲区。如果套接字的发送缓冲区容不下该应用进程的所有数据则该应用进程被投入睡眠。假设该套接字是阻塞的,则write将不从write系统调用返回,直到应用进程缓冲区中的所有数据都复

2016-06-06 17:34:02 573

原创 网络连接时套接字对的变化状态

TCP网络连接的详细过程    套接字对唯一标识一个网络上的每个TCP连接。    一个TCP连接的套接字对是定义该连接的两个端点的四元组:本地IP地址本地端口号(唯一标识一个进程,网络通信其实两台机器数两个进程之间的通信)和外地IP地址外地端口号。    连接的整个过程。    1.在主机上启动服务器

2016-06-06 15:40:04 708

原创 剑指offer1

剑指offer1        C++        1.定义一个空的类型,里面没有任何数据和成员函数,对该类型求sizeof?        结果为1而不是0,因为当我们声明这个类型的实例的时候他肯定在内存中占有一定的空间,否则无法使用实例。具体这个空间多大由compiler决定,一般为1.         2.如果在空类型中添加一个构造和析构函数再对该类型求sizeof

2016-06-06 11:38:48 246

原创 进程(1)

进程为何有进程的存在????????多个程序在执行时都想占用CPU,但CPU没有分身术,于是OS设计者发明了进程这一概念。伪并行:CPU在多道程序之间快速的切换。 程序和进程进程是运行中的程序,他除了包含程序中所有的内容外,还包含一些额外的数据。程序装入内存以后才得以运行,在程序计数器的控制下,指令不断的从内存取至CPU中运行。

2016-06-04 17:29:30 603

原创 虚拟地址、线性地址、物理地址(2)

1中讲述了分段机制,那么LUNIX中的段是什么样子的?      由于大多数硬件都不支持段机制只支持页机制,为了使LINUX具有更好的可移植性需要去掉段机制而只使用页机制。80x86规定段机制是不可禁止的。因此不能绕过他而只给出线性地址。聪明的LINUX设计人员让段基地址为0,段界限为4GB,这样虚拟地址和线性地址就是同一个。80X86规定必须为代码段和数据段创建不同的段所以LINUX必须为代

2016-06-04 15:47:14 457

原创 物理地址、线性地址、虚拟地址(1)

物理地址、线性地址、虚拟地址OS充分挖掘硬件潜能。OS开发者需要知道物理内存的地址也需要提供一套机制为应用程序员提供另一个内存空间,这个内存空间的大小可以和实际的物理内存大小之间没有关系。 物理地址:物理内存条所提供的内存空间,每个内存单元的实际地址就是物理地址。线性地址:一段连续的、不分段的范围从0到4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。虚拟地址:

2016-06-03 15:26:44 614

原创 友元函数

友元函数        友元函数:类的友元函数是非成员函数但是其访问权限和友元函数一样。        先谈谈函数重载,函数重载或者函数多态旨在能够使用同名的函数来完成相同的基本操作。        运算符重载将重载的概念拓展到运算符上,允许C++运算符有多重含义。        C++允许将运算符重载扩展到用户定义的类型。        在C++中可以定义一个表示数组的类,并

2016-05-27 15:18:48 522

原创 引用变量

引用变量:引用已定义的变量的别名。    作用:用作函数形参,通过将引用变量用作形参,函数将使用原始数据而不是其副本,除指针外引用也为函数处理大型数据结构提供了一种非常方便的途径。    example,    int rats;    int & rodents = rats;    rats和rodents的值和地址都是一样的。        引用变量与指针变量

2016-05-27 14:29:41 345

原创 对象和类

对象和类                                oop重要特性:抽象、封装和数据隐藏、多态、继承、代码可重用                    为了实现这些特性并将它们组合在一起,C++重要改进是提供了类                    过程型编程:首先考虑遵循的步骤,然后考虑如何表示这些数据,(将数据保持在一个文件中然后从文件中读取data)  

2016-05-26 11:12:00 251

原创 变量的三个属性

变量的三个基本属性:作用域、链接属性、存储持续性,这三个属性决定了变量的可视性(他可以在什么地方使用)和生命周期(它的值将保留多久)  四种基本的数据类型:整形、浮点型、指针、聚合类型  【1】变量的存储持续性:根据数据保留在内存中的时间  自动存储持续性:在函数定义中声明的变量(包含函数参数)他们在函数开始执行其所属函数或代码块时被创建,在执行完函数或者代码块时被释放。存储在栈中

2016-05-25 17:29:05 3493

原创 初识OS

什么是OS?                有的人说OS 就是电脑启动的时候跑的那个大程序,上面写着正在启动windows。有的人说OS和CS有什么区别。哈哈哈,那么对于我们计算机专业的人来说我们必须对OS有一个准确的认识。                OS最主要的两个介绍词就是manager和server。那么如何解释这两个词呢,请看下面的解释。                为什

2015-11-27 21:37:55 343

原创 C语言基础

转义字符        如果把“写入" "中将引起编译器的误解,因为前两个双引号已经构成了一个字符串,而后一个则由于没有与之对应的"而无法解释。这个时候通常是在\后加一个字母来表示一些无法直接书写的符号。在" "之内的\并不意味着\字符本身,而是和后面的一个字母共同作为一个字符而被编译器理解。转义字符:\“  \n  \t  \\  \' \a  \b          另外在C语言中

2015-05-04 18:54:52 381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除