Linux
文章平均质量分 77
CJ_Kano
不要只想着赢, 要想着不能输
展开
-
【UNIX】什么是进程
对于一个程序来说,他的被程序员写好,通过编译,就会以可执行文件存放在磁盘了,他的存放格式elf格式,可能是二进制文件,也有可能是文本文件,当使用者要使用程序时,就会通过系统的shell终端去执行命令,所以说程序时个静态的特性,他是保存在磁盘上的许多指令的有序集合,没有执行的概念。而对于进程来说就是一个动态的概念,他是程序在执行过程中被创建在虚拟内存中的,通过操作系统的调度,进行用户态和内核太之间的原创 2014-11-26 08:59:34 · 741 阅读 · 0 评论 -
【UNIX】内核对内核空间内存的管理以及对用户进程的堆内存分布
常用的内核内存分配函数 1)_get_free_pages是最原始的内存分配方式,至二级从伙伴系统中获取原始页框,返回值为第一个页框的起始地址。_get_free_pages在实现上只是封装了alloc_pages函数,而alloc_pages分配的长度为1 2)Kmem_cache_alloc是基于slab分配器的一种内存分配方式,适用于反复分配释放同原创 2015-01-10 08:21:12 · 991 阅读 · 0 评论 -
【UNIX】网络编程之在线词典编程初稿<不稳定>
服务器端:git@code.csdn.net:snippets/545029.git客户端:git@code.csdn.net:snippets/545031.git原创 2014-12-07 16:40:22 · 949 阅读 · 0 评论 -
【编程语言】fgets以及strncmp和strcmp的用法和区别
1)对于fgets()函数在打开一个文件时,用fgets函数去读取文件的每一行,fgets()函数会系统默认从上次读取的位置开始读取,也可以设置它的指针偏移量来控制每次要读取的哪一行。一般对于要读取一个文件的制定行可以通过判断要读取的字符串,就可以读取到你要取的那一行。示例代码如下:#include#include#includeint main(){ FI原创 2014-12-07 20:09:37 · 1540 阅读 · 0 评论 -
ARM平台环境搭建与交叉编译的实现
通过启动的打断机制可以使得arm平台在没有操作系统的情况下的驱动加载,直接通过GPIO和一些特定的IO引脚与片内外设的控制器或者直接挂载在系统的数据总线和地址总线上,当我们通过eclipse编译后生成的bin文件通过串口终端下载到内存地址的0x20008000处,此处的0x20008000是u-boot引导内核启动的起始地址,所以当我们把编译好的bin文件下载到此处,之后再在此处运行,从而可以驱动原创 2014-12-26 08:36:56 · 785 阅读 · 0 评论 -
【Linux界面】配置VI颜色,秀出代码世界的情趣
作为一个Linux敲代码的人来说长期要与vi界面打交道,对着枯燥的代码,而且还没有一点颜色可言,除了白色还是白色,背景图片也是经典的紫色,多乏味,我们敲代码的也可以也有自己的生活情趣,不管是一个界面,我们也要设计出自己的理想图形,这样才可以更好的舒服的去看代码敲代码,变出牛叉的程序来【1】当我们打开一个vi界面时可以通过点击编辑的配置文件选项来设置自己的个性,下面将通过一个个的图形界面原创 2014-12-27 11:31:32 · 3016 阅读 · 0 评论 -
从普通的函数调用到操作系统内核空间的访问
从普通的函数调用到操作系统内核空间的访问 首先通过了解认识函数的原理来体会函数的调用 1)函数首先什么是函数,函数是用于完成特定任务的程序代码自包含单元(这里的自包含单元听着可能不懂,其实就是代码段{}花括号里面的每条代码,以分号结尾的集合,它们是为了完成某种特定的功能而去编写的程序)那么在为什么要使用函数,一般来说,函数的使用可以省略代码的重复编写,这里就涉及到函数的调用原创 2014-12-29 00:20:56 · 1028 阅读 · 0 评论 -
【汇编指令】ARM指令集之PSR传送指令
ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。 cpsr_c代表的是这32位中的低8位,也就是控制位CPSR有4个8位区域:标志域(F)、状态原创 2014-12-14 13:11:38 · 2158 阅读 · 0 评论 -
【汇编指令】ARM指令集之寄存器及32位概述
1)ARM处理器有37+3个32位寄存器:其中有32个通用寄存器,只有一个PC指针寄存器,一般习惯用R15来指向正在取指的指令,而不是正在执行的指令。(这里涉及到arm处理器的流水线操作流程,下面在介绍),七个状态寄存器:但是只有一个CPSR寄存器(用来表示当前程序状态寄存器),6个SPSR寄存器(用来保存备份当前程序状态的异常数据)。处理器在工作时有8种不同的工作模式,对应的每一种处理器原创 2014-12-14 13:08:18 · 2690 阅读 · 0 评论 -
【系统移植】U_BOOT移植
U-BOOT移植 Bootloader引导启动 0x0000_0000 0x0000_8000 32KB IROM0x0002_0000 0x0003_8000 96KB IRAM0x0003_4000 0x0003_8000 16KB BL1 The boot loader is divided into t原创 2014-12-31 23:42:43 · 642 阅读 · 0 评论 -
【编程语言】诚迈试题二
1. linux内核内存分配方式 Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间 2. new/delete和malloc/free的区别 (1)操作对象有所不同。 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。对于非内部数据类的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动原创 2014-12-31 23:54:43 · 959 阅读 · 0 评论 -
【UNIX】从一个可执行文件的生成到进程在内存中分布 (上)/可执行文件的生成
一个源程序要生成可执行文件,需要通过编译器来实现,而编译器所起的作用就是把程序员编写的高级语言翻译成机器能读懂的低级语言(二进制代码),这里编译器起到翻译的作用。在Linux操作系统中采用的是GCC交叉编译工具。 虽然说GCC是个编译器,但是使用GCC从一个C语言程序生成可执行文件不仅仅只是编译过程,而是要经过四个相互关联的步骤:预处理(也称预编译,preprocessing)、编译(co原创 2015-01-03 00:35:56 · 948 阅读 · 0 评论 -
【UNIX】从一个可执行文件的生成到进程在内存中分布 (下)/进程的内存分布
从一个可执行文件的生成到进程在内存中分布 (下) 进程的内存分布原创 2015-01-04 00:05:00 · 945 阅读 · 0 评论 -
【UNIX】内核对进程的调度机制
(调度器) 对于一般进程,CPU的使用时间都是系统平均分配给每一个进程的,因此这种公平分享都从进程的角度出发的。 1) 调度时机:什么情况下,什么时候进行调度2) 调度的策略:根据什么准则选取下一个进程3) 调度方式:是“可剥夺”还是“不可剥夺”,当正在运行的进程并不自愿放弃对从CPU 的使用权时,是否强制性的暂时剥夺其使用权,停止其运行而给其他进程一个机会原创 2015-01-10 08:13:53 · 1066 阅读 · 0 评论 -
【UNIX】认识iner-net网际网以及网络编程
INTER-NET就是在网络之间的传输共享资源,它也就是跨计算机的传输,那么这种传输需要有什么样的约束,才能确保在网络之间传输,于是就有了网络传输协议的概念。只要大家遵循这种约定,抽象的理解也就是统一了接口的的含义,只要使用者遵循了这种约定,也就可以像之前一个计算机中两个进程之间的传输信息共享资源。网络的特点体现了网络进程过程中的分层特点,每一层约定特定的协议进行传输,网络的体系结构是原创 2014-12-03 16:43:15 · 824 阅读 · 0 评论 -
【UNIX】什么是进程的系统调用
系统调用一个程序以进程的状态在虚拟内存的空间要访问硬件资源的时候,内核提供系统调用的接口。每个进程有唯一的ID标识,其实在系统中也有一类进程,被称为调度进程,此进程也被称为系统进程,其ID为0,但是INIT进程是一种普通进程它的ID为1,一般为系统启动的时候就已经运行了,以一种后台守护进程方式存在的。当一个进程在内存中,可以通过fork()函数来创建一个子进程,一个子进程完全复制了父进程的数据原创 2014-11-27 08:58:43 · 748 阅读 · 0 评论 -
【个人情感】娘子写
西暮已逝,折扇怎敌胭脂泪晚风若雪,葬花且伴君一饮小石楼雨醉兰花夜微凉对影煮酒暖君行冷烛光红唇若朱似水芙蓉香诺指染青华浊酒盏杯一世当醉轻歌曼舞泪语画霓裳夜半空城多寂寞君已离兮归无期忆往昔寻得离殇作半曲独上楼台寒江摄孤影镜里不辞朱颜瘦月满西山人归处何曾闻得马蹄声只见悲风催断弦怅惘兮谁念娘子写待到比翼双飞原创 2014-11-30 11:49:14 · 524 阅读 · 0 评论 -
【UNIX】什么是线程
当一个程序以进程的形式在内存中执行的时候,每个进程的空间地址是私有的,因此在进程间的上下文切换是,系统消耗比较大,为了提高系统的性能,许多操作系统引入了轻量级的进程概念,被称为线程。在一个进程中创建的线程地址空间是共享的,在Linux中同样用task_struct 来描述线程,线程和进程都统一参与调度。1)一个进程中的多线程共享了以下资源:可执行命令静态数据进程中打开的原创 2014-11-30 19:21:29 · 587 阅读 · 0 评论 -
【UNIX】通过线程的同步和互斥完成的AB循环
/****************************mutex**********************/#include#include#include #include#include #define _LOCK_pthread_mutex_t mutex;void *t1(void *arg){ int i; pthread原创 2014-11-30 23:06:10 · 438 阅读 · 0 评论 -
【UNIX】进程间通信
Linux继承了AT&T和BSD以及早期的进程间的通信一般常用的通信方式有:1)传统的通信方式:无名管道,有名管道和信号。2)对于SYS 5 的进程间通信采用了共享内存,消息队列和信号灯的形式。3)BSD,对于一般网络间的通信采用来套接字的方式实现。1)无名管道的机制以及创建对于无名管道只是用于父子进程之间的通信,采用的是半双工的方式读写操作的,这里内核系统原创 2014-11-30 23:08:32 · 536 阅读 · 0 评论 -
【UNIX】什么是进程间FIFO通信以及信号通信
上篇中的无名管道通信是父子进程之间的通信,限定了进程之间的通信,从而就有了有名管道,它可以使不同进程之间进行通信,有名管道可以通过指定路径名来指出,兵长文件系统中可见。进程通过文件IO来操作有名管道,有名管道遵从先进先出的原则,但是不支持lseek函数。1)int mkfifo(const char *pthname,mode_t mode)创建有名管道,2)在内核中创建对象,但没有打开读原创 2014-12-01 20:58:10 · 651 阅读 · 0 评论 -
【UNIX】什么是IPC对象以及共享内存
sys V 的IPC 对象:对于内核中创建的文件对象,就是文件标识符(它引用了文件对象的全部信息)在进程中文件描述符一般使用当前最小可用值。对于IPC标识符返回的是索引的整数值,它是全局变量的流水号,在系统中唯一分配的,若果在创建的IPC对象没有关闭,他会全局存在,只有在系统关闭的时候才关闭,这样会造成内存空间的资源被占用。原创 2014-12-01 23:34:42 · 748 阅读 · 0 评论 -
【UNIX】怎么将buf和fgets运用在文件IO中open函数中
open函数打开创建文件一般有几种方式:1)第一种情况下是通过指定路径:open =("/tmp/text..c",O_RDWR|O_CREAT|O_APPEND,0666);这样就会在/TMP文件目录下就会自动创建了text.c了文件2)通过int mian (int argc,char *argv[])在shell终端输入命令,指定文件,会在缺省情况下自动创建不要自定文原创 2014-12-03 11:44:12 · 794 阅读 · 0 评论 -
【UINX】什么是守护进程
守护进程通常也称为daemon进程,它是Linux的后台服务进程,一般具有以下几个特点:1)它是一个生存周期较长的进程,通常独立于控制终端并且周期性额执行某个任务或等待某些发生事件。2)守护进程通常在系统启动的时候就开始运行,在系统关闭时才终止。3)守护进程大多数都是服务进程,在后台运行。编写守护进程1:创建一个进程,父进程退出,此时子进程就成为了守护进程2:脱离终原创 2014-11-30 14:41:25 · 539 阅读 · 0 评论 -
【UNIX】进程系统调用的wait/waitpid()函数
1)wait()函数在进程中通过fork函数可以创建父子进程,在两个进程中,父子进程可以执行自己的进程,进程的执行也有先后顺序,当调用该函数时可以是进程阻塞成等待状态,直到一个子进程或者该进程收到一个信号为止。如果该进程没有子进程或者子进程已经结束,该函数会立即返回。下面是wait()函数的一般形式:/** #include* #include* #include* #原创 2014-11-30 14:31:42 · 657 阅读 · 0 评论 -
【UNIX】什么是线程的同步和互斥
1)线程的同步指的是在一个进程中线程之间按照约定同步完成一个事件。由信号量来决定线程是该运行还是阻塞。线程间的同步依靠P/V操作来完成,其中信号量是一个受保护的量,只能通过三种操作来访问:初始化,P操作(申请资源,此时P下面的信号量是处于等待状态,只有在V操作完成后,才会执行,所以P操作一般使用wait函数)和V操作(释放资源,只有V之前的指令执行完,才可以执行下面的指令,所以使用post函数原创 2014-11-30 22:54:45 · 817 阅读 · 0 评论 -
【UNIX】网络编程/多路复用IO服务器编码
服务器端:#include#include#include#include#include#include#include#include#define MAXLEN 100typedef struct sockaddr SA;int main (){ int nr; int listenfd,connfd,maxfd,i,nby原创 2014-12-04 08:49:21 · 701 阅读 · 0 评论 -
【编程语言】进程中栈空间的参数返回值以及局部变量的分布
在进程中对于局部变量是怎么分配的,以及函数是怎么调用的其实也就是讲解栈区的具体使用过程。( 下面代码图摘要于网络) 首先,我们要知道,栈中存放的是一个个被调函数所对应的堆栈帧,当函数fun1被调用,则fun1的堆栈帧入栈,fun1返回时,fun1的堆栈帧出栈。什么是堆栈帧呢,堆栈帧其实就是保存被调函数返回时下一条执行指令的指针、主调函数的堆栈帧的指针、主调函数传递给被调函数的原创 2015-01-04 22:49:54 · 1610 阅读 · 0 评论