linux
文章平均质量分 63
liqiuguo
人生是一种赌博,该赌博的时候到了
展开
-
竞态条件与sigsuspend,sigchld信号函数
竞态条件与sigsuspend函数原创 2014-04-13 20:30:44 · 546 阅读 · 0 评论 -
文件系统的查看工具
$ od -tx1 -Ax fs可以看到十六进制的文件系统内容原创 2014-04-13 10:43:24 · 581 阅读 · 0 评论 -
文件和目录操作的系统函数
件和目录操作的系统函数 请点评本节简要介绍一下文件和目录操作常用的系统函数,常用的文件操作命令如ls、cp、mv等也是基于这些函数实现的。本节的侧重点在于讲解这些函数的工作原理,而不是如何使用它们,理解了实现原理之后再看这些函数的用法就很简单了,请读者自己查阅Man Page了解其用法。stat(2) 函数读取文件的inode,然后把inode中的各种文件属性填入一个struct原创 2014-04-13 10:50:19 · 481 阅读 · 0 评论 -
虚拟文件系统(VFS)
每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针,现在我们明确一下:已打开的文件在内核中用file 结构体表示,文件描述符表中的指针指向file 结构体。在file 结构体中维护File Status Flag(file 结构体的成员f_flags)和当前读写位置(file 结构体原创 2014-04-13 11:06:34 · 464 阅读 · 0 评论 -
进程
每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解一下其中都有哪些信息。进程id。系统中每个进程有唯一的id,在C语言中用pid_t 类型表示,其实就是一个非负整数。进程的状态,有运行、挂起、停止、僵尸等状态。进程切换时需要保存和恢复的一些CPU寄存器。描述虚拟地址空间的信息。描述控制终端的信息。当前工作目录原创 2014-04-13 11:24:39 · 357 阅读 · 0 评论 -
进程控制fork和exec, wait和waitpid
3. 进程控制 3.1. fork函数 #include #include pid_t fork(void);fork 调用失败则返回-1,调用成功的返回值见下面的解释。我们通过一个例子来理解fork 是怎样创建新进程的。原创 2014-04-13 12:45:29 · 1026 阅读 · 0 评论 -
bash命令
执行交互式命令是用which 命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令原创 2014-04-13 13:51:22 · 480 阅读 · 0 评论 -
正则表达式
果要用grep 查找一个模式,如何表示这个模式,这一类字符串,而不是一个特定的字符串呢?从这两个简单的例子可以看出,要表示一个模式至少应该包含以下信息:字符类(Character Class):如上例的x和y,它们在模式中表示一个字符,但是取值范围是一类字符中的任意一个。数量限定符(Quantifier): 邮件地址的每一部分可以有一个或多个x字符,IP地址的每一部分可以有1-原创 2014-04-13 14:16:20 · 348 阅读 · 0 评论 -
捕捉信号
捕捉信号 4.1. 内核如何实现信号的捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:1. 用户程序注册了SIGQUIT信号的处理函数sighandler 。2. 当前正在执行main 函数,这时发生中断或异常切换到内核态。3. 在中断处理完毕后要返回用户态的main 函原创 2014-04-13 19:54:52 · 359 阅读 · 0 评论 -
信号
1. 信号的基本概念 为了理解信号,先从我们最熟悉的场景说起:1. 用户输入命令,在Shell下启动一个前台进程。2. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。3. 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。4. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以原创 2014-04-13 19:00:19 · 418 阅读 · 0 评论 -
《UNIX环境高级编程读书札记》2
标准IO输入/输出库原创 2014-04-28 16:22:28 · 360 阅读 · 0 评论 -
bochs调试内核
利用bochs调试内核(主要是在windows下调试)Bochs具有非常强大的操作系统内核调试功能。这也是本文选择Bochs作为首选实验环境的主要原因之一。有关Bochs调试功能的说明参见前面14.2节,这里基于Linux 0.11内核来说明Windows环境下Bochs系统调试操作的基本方法。14.8.1 运行Bochs调试程序我们假设Bochs系统已被安装在目录“C:\Prog转载 2015-09-08 11:04:10 · 454 阅读 · 0 评论 -
bochs调试linux 0.11内核
学习操作系统,最难的就是保护模式的各种硬件机制了(如分段分页寻址,特权级,门机制)。单纯的8086实模下的汇编模拟器是无法模拟,调试这些机制的。只能用个功能更强大的80*86模拟器了。由于模拟器挺多的,如vmware, virtual box等等,但是好像更方便调试的,我们选择bochs吧。 赵炯博士已经为我们准备好了bochs,而且还带有linux 0.11的ima转载 2015-09-08 10:51:11 · 282 阅读 · 0 评论 -
《UNIX环境高级编程读书札记》1
unix自身的输入输出如下:原创 2014-04-27 20:56:55 · 405 阅读 · 0 评论 -
共享库
用ldd 命令查看可执行文件依赖于哪些共享库:$ ldd mainlinux-gate.so.1 => (0xb7f5c000)libstack.so => not foundlibc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dcf000)/lib/ld-linux.so.2 (0xb7f42000)原创 2014-04-12 20:55:34 · 316 阅读 · 0 评论 -
作业和session
现在我们从Session和进程组的角度重新来看登录和执行命令的过程。1. getty 或telnetd进程在打开终端设备之前调用setsid函数创建一个新的Session,该进程称为Session Leader,该进程的id也可以看作Session的id,然后该进程打开终端设备作为这个Session中所有进程的控制终端。在创建新Session的同时也创建了一个新的进程组,该进程是这原创 2014-04-13 20:55:55 · 412 阅读 · 0 评论 -
linux的/etc/fstab的理解
fstab(/etc/fstab)是Linux下比较重要的配置文件,是mount命令使用参数 -a时使用的配置文件。mount -a 命令会读取fstab文件内容的配置挂载所以配置的文件系统(设备)。fstab文件内容实例:LABEL=/ / ext3 defaults 1 1LABEL=/转载 2014-03-28 17:00:26 · 728 阅读 · 0 评论 -
volatile 限定符
对于程序中存在多个执行流程访问同一全局变量的情况,volatile 限定符是必要的,此外,虽然程volatile需要限定:变量的内存单元中的数据不需要写操作就可以自己发生变化,每次读上来的值都可能不一样即使多次向变量的内存单元中写数据,只写不读,也并不是在做无用功,而是有特殊意义的什么样的内存单元会具有这样的特性呢?肯定不是普通的内存,而是映射到内存地址空间的硬件寄存器,例如串原创 2014-04-13 20:24:15 · 353 阅读 · 0 评论 -
处理器模式
通常操作系统把虚拟地址空间划分为用户空间和内核空间,例如x86平台的Linux系统虚拟地址空间是0x00000000~0xffffffff,前3GB(0x00000000~0xbfffffff)是用户空间,后1GB(0xc0000000~0xffffffff)是内核空间。用户程序加载到用户空间,在用户模式下执行,不能访问内核中的数据,也不能跳转到内核代码中执行。这样可以保护内核,如果一原创 2014-04-17 22:32:04 · 422 阅读 · 0 评论 -
lnux下的c++游戏编程
1.学习好c++。2.学习好linux命令。3.学习好OpenSL 。4.学习浩Cocos2D-x。原创 2014-03-16 13:31:20 · 235 阅读 · 0 评论 -
linux的主要学习大块
1.文件系统。2.进程和线程管理。3.原创 2014-04-11 10:49:41 · 393 阅读 · 0 评论 -
Linux的重要配置文件
linux 重要配置文件在任何情况下,在修改配置文件之前要进行备份。sudo cp file file_`date +%Y%m%d_%H:%M`如果嫌手工备份文件麻烦,可以编写一个shell程序。#!/bin/sh sudo cp $1 $1_`date +%Y%m%d_%H:%M`运行时,将需要备份的配置文件的名原创 2014-04-11 10:52:34 · 390 阅读 · 0 评论 -
linux的基础
linux要学习好,要把握好下面的几个模块学习。1.文件系统。2.用户组原创 2014-04-25 11:17:15 · 323 阅读 · 0 评论 -
linux的学习范围
管理 《LINUX系统管理白皮书》 C语言/C++ 《Unix环境高级编程》 《GNU/Linux编程指南》 《Linux上的C编程》 《深入学习:GNU C++ for Linux编程技术》 《UNIX程序设计》 《unix系统程序设计》 《LINUX编程白皮书》 系统 UNIX操作系统设计 操作系统设计与实现 KDeveloper转载 2014-04-11 18:02:24 · 415 阅读 · 0 评论 -
open,close和read,write文件操作
open/closeopen 函数可以打开或创建一个文件。#include #include #include int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);返回值:成功返回新分配的文件描述符,出错返回-1并设置errn原创 2014-04-12 22:11:49 · 909 阅读 · 0 评论 -
linux 的汇编和链接
若main.c 为c语言文件, gcc -c main.c main.o gcc main.o main原创 2014-04-12 19:16:51 · 515 阅读 · 0 评论 -
linux的静态库的实现
这些文件的目录结构是:$ tree.|-- main.c`-- stack|-- is_empty.c|-- pop.c|-- push.c|-- stack.c`-- stack.h1 directory, 6 files我们把stack.c、push.c、pop.c 、is_empty.c 编译成目标文件:$ gcc -c stack/stack原创 2014-04-12 20:45:56 · 360 阅读 · 0 评论 -
三星的ARM的s5pv210的芯片可以执行程序的存储器
(1)BL0:是指S5PV210的iROM中固化的启动代码 作用:初始化系统时钟,设置看门狗,初始化堆和栈,加载BL1(2)BL1:是批在iRAM自动从外扩存储器(nand/sd/usb)中拷贝的uboot.bin二进制文件的头最大16K代码 作用:初始化RAM,关闭Cache,设置栈,加载BL2(3)BL2:是指在代码重定向后在内存中执行的ub转载 2015-09-20 14:11:58 · 384 阅读 · 0 评论