当前位置:文档之家› Linux程序设计知识点整理

Linux程序设计知识点整理

Linux程序设计知识点整理
Linux程序设计知识点整理

Prerequisite

一、Linux 命令

1、文件操作

列出目录内容: ls, dir, vdir

创建特殊文件: mkdir, mknod, mkfifo

文件操作: cp, mv, rm

修改文件属性: chmod, chown, chgrp, touch

查找文件: locate, find

字符串匹配: grep(egrep)

其它: pwd, cd, ar, file, grep, tar, more, less, head, tail, cat

2、进程操作

ps, kill, jobs, fg, bg, nice

3、其它

who, whoami, passwd, su, uname, …

man

二、Linux工具

编辑工具:vi, emacs

编译、链接:gcc(GNU C Compiler -> GNU Compiler Collection)

调试:gdb

make命令

版本控制工具:CVS等

三、编程语言

1、High-level Language:C/C++, Java, Fortran…

2、ELF binary format:Excutable and Linkable Format(工具接口标准委员会(TIS)选择了正在发展中的ELF体系上不同操作系统之间可移植的二进制文件格式)

四、GCC使用

-E: 只对源程序进行预处理(调用cpp预处理器)

-S: 只对源程序进行预处理、编译

-c: 执行预处理、编译、汇编而不链接

-o output_file: 指定输出文件名

-g: 产生调试工具必需的符号信息

-O/On: 在程序编译、链接过程中进行优化处理

-Wall: 显示所有的警告信息

-Idir: 指定额外的头文件搜索路径

-Ldir: 指定额外的库文件搜索路径

-lname: 链接时搜索指定的库文件

-DMACRO[=DEFN]: 定义MACRO宏

Gcc过程:预处理、编译、汇编、链接

GDB使用

设置断点、监视变量值、单步执行、修改变量值

make [-f filename] [targetname]

Shell编程

一、S hell概述

1、Shell

用户和操作系统之间的接口、作为核外程序而存在

2、Shell 的双重角色

1)、命令解释程序

(1)Linux的开机启动过程:加载BIOS;读取MBR(Master Boot Record);Boot Loader;加载内核;用户层init依据inittab文件来设定运行等级;init进程执行rc.sysinit;启动内核模块;执行不同运行级别的脚本程序;执行/etc/rc.d/rc.local;执行/bin/login程序,进入登录状态

(2)进程树:进程树是一种进程关系表示方法。由父进程和子进程两部分组成。

(3)Shell的工作步骤:打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令

2)独立的程序设计语言解释器

(1)KISS (Keep It Small and Stupid)

(2)Reusable tools

(3)Redirection and pipe

二、创建和执行Shell程序

1、编写脚本文件(注释、退出码(exit 0))

2、执行脚本文件

方法1:$ sh script_file

方法2:chmod +x script_file (chown, chgrp optionally)

./script_file

方法3:source script_file, or . script_file

1、在当前bash环境下新建一个子shell来执行这个脚本,继承父Shell的环境变量,用于执

行刚修改的初始化文档,

2、这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。由于是在子shell中执行,脚本设置的变量不会影响当前shell。

3、source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效

三、Shell程序设计的语法

1、变量

1、用户变量:

(1)定义:用户在shell脚本里定义的变量

(2)赋值和使用:

var=value

echo $var

(3)read命令:(read -p "Enter your name:" name)

read var 或read

REPLY variable(环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY,当然,在引用的时候不要忘记$)

-s:默读、在输入密码时用的到

-t:计时输入,后接等待秒数

(4)引号的用法:

双引号作用:$ ,\ ,`这些字符的特殊含义还是存在

单引号:忽略所有的特殊字符

2、用户环境

(1).bash_profile, .bash_logout, .bashrc files

.bash_profile: 用户登录时被读取,其中包含的命令被bash执行

.bashrc: 启动一个新的shell时读取并执行

.bash_logout: 登录退出时读取执行

(2)Alias:alias[别名]=[指令名称],若不加任何参数,则列出目前所有的别名设置。

alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。

Unalias [别名]

(3)环境变量:

export [-fnp][变量名称]=[变量设置值]

-f 代表[变量名称]中为函数名称。

-n 删除指定的变量。变量实际上未删除,只是不会输出到后续指令的执行环境中。

-p 列出所有的shell赋予程序的环境变量。

env:显示当前用户的环境变量;

set:用set 命令可以设置各种shell选项或者列出shell变量

-a 标示已修改的变量,以供输出至环境变量。

-b 使被中止的后台程序立刻回报执行状态。

-C 转向所产生的文件无法覆盖已存在的文件。

-d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。-d参数可取消。

-e 若指令传回值不等于0,则立即退出shell。

-f 取消使用通配符。

-h 自动记录函数的所在位置。

-H Shell 可利用"!"加<指令编号>的方式来执行history中记录的指令。

-k 指令所给的参数都会被视为此指令的环境变量。

-l 记录for循环的变量名称。

-m 使用监视模式。

-n 只读取指令,而不实际执行。

-p 启动优先顺序模式。

-P 启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。

-t 执行完随后的指令,即退出shell。

-u 当执行时使用到未定义过的变量,则显示错误信息。

-v 显示shell所读取的输入值。

-x 执行指令后,会先显示该指令及所下的参数。

+<参数> 取消某个set曾启动的参数。

3、环境变量(Shell环境提供的变量。通常使用大写字母做名字)

4、参数变量和内部变量

调用脚本程序时如果带有参数,对应的参数和额外产生的一些变量。

2、条件测试

1、字符串比较

2、算数比较

3、与文件有关的条件测试

4、逻辑操作

5、条件语句

(1)形式:(紧凑形式; (同一行上多个命令的分隔符))if [ expression ]

then

statements

elif [ expression ]

then

statements

elif …

else

statements

fi

6、case语句

(1)形式:

case str in

str1 | str2) statements;;

str3 | str4) statements;;

*) statements;;

Esac

3、重复语句

1、for语句:适用于对一系列字符串循环处理

(1)形式:

for var in list

do

statements

done

例:

#!/bin/sh

for file in $(ls f*.sh); do

lpr $file

done

exit 0

2、while语句

(1)形式:

while condition

do

statements

done

3、until 语句(不推荐使用)

(1)形式:

until condition

do

statements

done

4、Select语句:生成菜单列表

(1)形式:

select item in itemlist

do

statements

done

4、命令表业语句块

1、命令表

(1)命令组合

分号串联:command1 ; command2 ; …

条件组合:

AND命令表:只有在&& 左边的命令返回真,&& 右边的命令才会被执行格式:statement1 && statement2 && statement3 && …

OR命令表:只有在|| 左边的命令返回假,|| 右边的命令才会被执行。

格式:statement1 || statement2 || statement3 || …

2、语句块

(1)形式

{

statement1

statement2

}

或{ statement1; statement2 ; …; }

5、函数

(1)形式

[function] funcname()

{

statements

[return int]

}

(2)局部变量:局部变量只适用于当前shell,local关键字

(3)函数的调用:func para1 para2 …

6、其他

1、杂项命令:

break: 从for/while/until循环退出

continue: 跳到下一个循环继续执行

exit n: 以退出码”n”退出脚本运行

return: 函数返回

export: 将变量导出到shell,使之成为shell的环境变量

set: 为shell设置参数变量

unset: 从环境中删除变量或函数

trap: 指定在收到操作系统信号后执行的动作

“:”(冒号命令): 空命令

“.”(句点命令)或source: 在当前shell中执行命令

2、find命令

(1)形式:find [path] [options] [tests] [actions]

Options

Tests

可以用操作符进行组合测试:!(-not);-a(-and);-o(-or)

可以用圆括号来强制测试和操作符的优先级,需要用到转义字符\ 例:

find . \(-name "_*" -or -newer while2\) -type f –print

-amin、-anewer、-atime

-cmin、-cnewer、-ctime

-empty、-gid or -group、-pid

-name, -iname

-size、-type

-ipath

, -path

路径名符合p的文件,ipath表示忽略大小写

actions

3、grep命令(用于在文件中查找字符串)

(1)形式:grep [OPTIONS] PATTERN [FILES]

(2)正则表达式:广泛用于Linux和许多其他编程语言中,基本原理都是一样的

注:上表中的括号需要使用转移字符’\’,如grep –E [a-z]\{10\} words2.txt 4、捕获命令输出

(1)语法:

$(command)

`command`

(2)例:

#!/bin/sh

echo “The current directory is $PWD”

echo “The current directory is $(pwd)”

exit 0

5、算数扩展

(1)expr命令(支持的operator包括)

expr argument operator argument

(2)$((…))扩展

例:x=$(($x+1))

6、参数扩展

#!/bin/sh

i=0

while * “$i” –ne 10 ]; do

touch “${i}_tmp”

i=$(($i+1))

done

exit 0

7、即时文档

在shell脚本中向一条命令传送输入数据

#!/bin/bash

cat << !CATINPUT!

Hello, this is a here document.

!CATINPUT!

8、shell脚本调试

*sbin/service:

它本身是一个shell脚本程序,作用就是获取传递给它的两个参数:$1 $2,分别是服务名和对该服务的动作。然后调用/etc/rc.d/init.d/服务名称($1),并给该服务脚本传递你指定的动作($2)。

例如:service httpd stop

本身就是执行:/etc/rc.d/init.d/httpd stop。由httpd脚本去控制httpd服务的停止动作(stop)。文件系统

1、文件系统定义

1、基本定义

文件:一个可以被读写的对象。文件有一定的属性,包括访问权限和类型

文件系统:文件和其某一些属性的集合。它为指向文件的序列号提供了一个名空间文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。

文件类型:regular file、character special file、block special file、fifo、socket、symbolic link、directory(普通文件、特殊字符文件、块文件、命名管道、套接字、符号连接、目录)

文件结构:Byte stream; no particular internal structure(字节流、无特殊内部构造的文件)*ls –l命令

2、文件系统层次结构

3、文件系统的多种含义:

(1)一种特定的文件格式(Ext2、FAT16、NTFS、FAT32)

(2)指按照特定格式“格式化”的一块存储介质(“安装”、“卸载”一个文件系统)

(3)指操作系统中(通常指在内核中)用来管理文件系统以及对文件进行操作的机制及其实现

4、创建一个文件系统

(1)创建一个文件:dd if=/dev/zero of=/work/file.img bs=1k count=10000

(2)用作块设备:

losetup /dev/loop0 /work/file.img

mke2fs –c /dev/loop0 10000

mkdir /mnt/testfs

mount –t e2fs /dev/loop0 /mnt/testfs

5、Linux中的文件系统(VFS:Virtual File system Switch)

(1)每个进程通过“打开文件”(open())与具体的文件建立起连接,或者说建立起一个读写的上下文。这种连接以一个file数据结构为代表,结构中有个file_operations结构指针f_op。(2)将file结构中的指针f_op设置成指向某个具体的file_operations结构变量,就指定了这个文件所属的文件系统,并与具体文件系统所提供的一组函数挂上了钩

VFS模型是虚拟的,只在内存中出现,包含如下组成:super block、i-node object、file object、dentry object

(1)超级块(superblock,了解数据结构):

s_list:指向超级块链表的指针

*s_type:文件系统类型

*s_op:超级块方法

s_instances:该类型文件系统

(2)索引节点(inode,了解数据结构):

*i_op:索引节点操作表

*i_fop:该索引节点对应文件的文件操作集

*i_sb:相关的超级块

(3)目录(dentry,了解数据结构)

目录项对象,一个路径的各个组成部分,不管是目录还是文件,都是一个dentry对象*d_inode:相关的索引节点

*d_parent:父目录的目录项对象

d_name:目录项的名字

d_subdirs:子目录

*d_op:目录项操作表

*d_sb:文件超级块

目录项布局:目录项内容包括索引节点编号, 目录项名称长度以及名称本身。

(4)文件(file)

已打开的文件在内存中的表示:

6、进程和文件系统

7、Ext2文件系统

(1)GDT(group descriptor table)

每个块组信息,例如inode表起始位置;数据区起始位置,所有这些块组描述符构成GDT;每个group中都有一份GDT,以做备份

(2)Block bitmap: 块位图

描述block group中每个block是否被使用;本身占据一个block,每个block占据一个bit,假设block大小是1024 byte;那么总共可以描述:1024*8=8192 个block信息,1:表示已占用;0表示未占用

(3)Inode bitmap

(4)Inode table

块组中所有的inode构成inode表,每个inode对应一个物理文件;Inode table的空间大小在格式化时候决定;Mke2fs默认块组有多少个8KB,就分配多少个inode

(5)data block

对于常规文件,文件的数据存储在数据块中

目录文件:该目录下所有的文件名和目录名存储在数据块中

符号链接:如果目标路径名较短则直接保存在inode中以便更快地查找,如果目标路径

名较长则分配一个数据块来保存

设备文件:fifo,socket文件等没有数据块,设备文件的major ,minor number保存在inode中

* 目录:一种特殊文件, 其文件内容是该目录中的目录项

8、Hard Link、Soft Link

(1)Hard link

不同的文件名对应同一个inode

不能跨越文件系统

对应系统调用link

(2)Symbolic link

存储被链接文件的文件名(而不是inode)实现链接

可跨越文件系统

对应系统调用symlink

9、数据块寻址

(1)Inode->block[15]数组

(2)Block[12-14]:间接索引

Block[12]:b/4

Block[13]:b/4*b/4

Block[14]:b/4*b/4*b/4

2、系统调用和库函数

1、比较:

相同点:都以C函数的形式出现

不同点:

系统调用:Linux内核的对外接口; 用户程序和内核之间唯一的接口; 提供最小接口

库函数:依赖于系统调用; 提供较复杂功能

2、可缓冲和非缓冲的I/O

(1)Unbuffered I/O

read/write ->System calls

File descriptor

不在标准化C中,但是存在于POSIX.1和XPG3

(2)Buffered I/O

用标准I/O实现

处理很多细节, 如缓存分配, 以优化长度执行I/O等.

Stream -> a pointer to FILE

3、基本I/O系统调用

1、文件描述符:无符号整数表示的句柄

中定义的:STDIN_FILENO (0), STDOUT_FILENO (1), STDERR_FILENO (2)?

打开文件操作基本流程:open-read/write-[lseek]-close

2、基本I/O操作

3、错误处理

(1)采用UNIX风格,返回错误代号”errno”,errno变量和错误代码都在头文件/usr/include/errno.h 中定义

(2)strerror & perror

char *strerror(int errnum); void perror(const char *msg);

4、open/creat函数(打开或者有可能创建一个文件)

#include

#include

#include

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

int creat(const char *pathname, mode_t mode);

* creat(pathname, mode)等价于open(pathname, O_WRONLY|O_CREAT|O_TRUNC, mode)?

返回值:成功时返回文件的描述符,失败时返回-1

参数:

(1)flags(除了O_RDONLY、O_WRONLY 、O_RDWR以外的):

O_APPEND:以追加方式打开

O_TRUNC::如果文件已经存在并且是一个普通文件且打开方式允许写操作,则文件长度被截0

O_CREAT:如果文件不存在则创建

O_EXCL:如果文件已经存在则错误返回

(2)mode:如果新文件被创建设置其属性

*umask机制:新创建文件的权限为:mode & ~umask

目录默认:777,文件默认:666

5、close函数

#include

int close(int fd);

返回值:成功则返回0,失败则返回1

6、read/write函数

#include

ssize_t read(int fd, void *buf, size_t count);

返回值: 读到的字节数,若已到文件尾为0,若出错为-1

ssize_t write(int fd, const void *buf, size_t count);

返回值: 若成功为已写的字节数,若出错为-1

7、lseek函数:定位文件中的读写位置

#include

#include

off_t lseek(int fildes, off_t offset, int whence);

返回值:如果成功则返回地址的偏移量,失败则返回-1

参数whence:

SEEK_SET: 从文件开头计算偏移量

SEEK_CUR: 从文件当前的位置开始计算偏移量

SEEK_END: 从文件结尾的位置开始计算偏移量

8、dup/dup2函数:复制文件描述符

*文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。

dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。

dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。

#include

int dup(int oldfd);

int dup2(int oldfd, int newfd);

返回值:成功则返回文件新的描述符,失败则返回-1

9、文件共享与原子操作

不同进程间共享打开文件:进程表项-文件表-i节点表

10、fcntl函数:对指定的描述符对应的文件进行操作

#include

#include

int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

int fcntl(int fd, int cmd, struct flock *lock);

返回值: 若成功则依赖于cmd,若出错为-1

F_DUPFD: 用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd 的文件描述词。

F_GETFD/F_SETFD: 取得/设置close-on-exec旗标。

F_GETFL/F_SETFL: 取得/设置文件描述词状态旗标

F_GETOWN/F_SETOWN: 管理可用的I/O信号

F_GETLK/F_SETLK/F_SETLKW: 取得/设置文件锁定的状态,后者若连接断开则直接错误返回11、ioctl函数:控制设备,提供了一种获得设备信息和向设备发送控制参数的手段。

#include

int ioctl(int d, int request, ...);

4、标准I/O库

1、文件流

(1)结构:

Stream and “FILE” structure

FILE* fp;

Predefined pointer: stdin, stdout, stderr

(2)可缓冲的I/O

三种缓冲方式:全缓冲、行缓冲、不缓冲

2、open/close函数:

#include

FILE *fopen(const char *filename, const char *mode);

int fclose(FILE *stream);

参数:

Mode:“r”(只读)、“w”(覆盖原有内容)、“a”(追加写)、“r+”(可读写)、“w+”(可读写、如果不存在则创建,已有内容则覆盖)、“a+”(可读可追加,如果不存在则创建)

3、close函数

#include

int fclose(FILE *fp);

返回值:成功返回0,失败返回-1

3、字符输入:从流中读取一个字符,作为从无符号char转换成int返回,如果到末尾返回EOF

#include

int getc(FILE *fp);

int fgetc(FILE *fp);

int getchar(void);

*ungetchar将字符送回流中

4、字符输出:

#include

int putc(int c, FILE *fp);

int fputc(int c, FILE *fp);

int putchar(int c);

5、一行字符串输入:fgets, gets functions,读取最多size-1个字符,存入s中(s最后一个字符为’\0’),遇到EOF则停止读取)

#include

char *fgets(char *s, int size, FILE *stream);

2016Linux程序设计复习题

一、填空题 1、在Linux 系统中,以文件方式访问设备。 2、Linux 内核引导时,从文件/etc/fstab 中读取要加载的文件系统。 3、Linux 文件系统中每个文件用i 节点来标识。 4、全部磁盘块由四个部分组成,分别为引导块、专用块、i 节点表块和数据存储块。 5、链接分为:硬链接和符号链接。 6、超级块包含了i 节点表和空闲块表等重要的文件系统信息。 7、某文件的权限为:drw-r--r-- ,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录。 8、前台起动的进程使用Ctrl+C 终止。 9、静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。 10、网络管理的重要任务是:控制和监控。 11、安装Linux 系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。 12、编写的Shell 程序运行前必须赋予该脚本文件执行权限。 13、系统管理的任务之一是能够在分布式环境中实现对程序和数据的安全 保护、备份、恢复和更新。 14、系统交换分区是作为系统虚拟存储器的一块区域。 15、内核分为进程管理系统、内存管理系统、I/O 管理系统和文件管理系统等四个子系统。 16、内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。 17、在安装Linux 系统中,使用netconfig 程序对网络进行配置,该安装程序会一步步提示用 户输入主机名、域名、域名服务器、IP 地址、网关地址和子网掩码等必要信息。 18、唯一标识每一个用户的是用户ID 和用户名。 19、RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。 20、在Linux 系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。 21、DHCP可以实现动态IP 地址分配。 22、系统网络管理员的管理对象是服务器、用户和服务器的进程以及系统的各种资源。 23、网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的 中心。 24、当想删除本系统用不上的设备驱动程序时必须编译内核,当内核不支持系统上的 设备驱动程序时,必须对内核升级。 25、Ping 命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络 的连通性。 26、vi 编辑器具有三种工作模式:命令模式、底行模式和输入模式。 27、可以用ls –al 命令来观察文件的权限,每个文件的权限都用10 位表示,并分为四段, 其中第一段占 1 位,表示文件类型,第二段占 3 位,表示文件所有者对该文件的权限。 28、进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基 本状态为:运行态、就绪态和等待态(阻塞态)。 29、DNS实际上是分布在internet 上的主机信息的数据库,其作用是实现IP地址和主

Linux考试知识点总结

Linux服务器配置与应用考试覆盖范围知识点总结 考前★绝密知识点覆盖率95% 总结人:敌无小新时间:2009年12月23日晚 此复习题尽量保密,被老师发现可能会重考,慎重带入考场! 1.安装软件的方法? RPM包,源码包安装,*.bin格式安装文件安装 2.RPM命令参数使用? 安装软件#RPM -ivh 软件包名参数:-q 查询-U 升级-V检查-e卸载3.源码包安装过程实例? #tar -xzvf *.tar.gz #cd * #./config #make # make install 4.bin文件安装? #./*.bin 5.Linux下设置服务自启动的过程(两种)? ntsysv chkconfig --level 35 服务名称on 6.Samba服务正常工作至少需要两个守护进程,分别是? nmbd smbd 7.Samba服务的核心配置文件? /etc/samba/smb.conf 8.Samba服务器使用的安全等级? share安全等级共享级别,不需要账号和密码,安全性最低 user 安全等级用户级别,需要账号和密码,默认为该级别 server安全等级服务器级别,与user同级别,但验证由另一台SMB负责9.NFS需要哪两个安装包? nfs-utils主要提供nfs服务目录共享 portmap 主要提供远程连接 10.NFS的主配置文件? /etc/exports 11.启动停止与重启NFS服务?(此题顺序不能错) /etc/init.d/portmap start 或service portmap start /etc/init.d/nfs start service nfs start /etc/init.d/nfs stop service nfs stop /etc/init.d/portmap stop service portmap stop /etc/init.d/nfs restart service nfs restart 12.查看NFS服务器192.168.16.177上共享目录? #showmount -e 192.168.16.177 13.挂载NFS服务器上输出目录?(实例) #mount -t NFS 服务器名或IP地址:输出目录本地挂载目录 #mkdir /mnt/nfs #mount -t nfs 192.168.16.177:/nfs/public /mnt/nfs 14.卸载NFS服务器挂载目录? #umount /mnt/nfs 15.实现自动挂载NFS目录,应修改哪个文件,怎么设置? /etc/fstab (储存系统内的静态挂载点,即每次启动时挂载的文件系统。) NFS服务器名或IP:输出目录本地挂载目录nfs defaults 0 0

linux系统编程试卷(答案)

凌阳教育 嵌入式培训系统编程部分测试试题 注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟 一:选择题(本题共4小题,每题3分共12分) 1)下列不是Linux系统进程类型的是( D ) A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态) 2)以下对信号的理解不正确的是( B ) A 信号是一种异步通信方式 B 信号只用在用户空间进程通信,不能和内核空间交互 C 信号是可以被屏蔽的 D 信号是通过软中断实现的 3)进程有三种状态( C ) A 准备态、执行态和退出态 B 精确态、模糊态和随机态 C 运行态、就绪态和等待态 D 手工态、自动态和自由态 4)不是进程和程序的区别( B) A 程序是一组有序的静态指令,进程是一次程序的执行过程 B 程序只能在前台运行,而进程可以在前台或后台运行 C 程序可以长期保存,进程是暂时的 D 程序没有状态,而进程是有状态的 二:填空题(本题共6小题,2)、3)两题每空四分,其余每空一分。共23分) 1) 列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字 网络上两个主机的进程间通信方式为套接字 2) 命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程 间通信 3) 消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先 进先出 4) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库 5) 在C语言中操作sqlite数据库,常用的2中方式是sqlite_exec(回调)、

sqlite_gettable(非回调) 6) 列举四种进程调度算法先来先调度(FCFS)、短进程优先调度(SPF)、高优先级调度 (HPF)、时间片轮转调度 三:问答题(本题共7题,每题5分,共35分) 1) 什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。什么是文件I/O和标准I/O库?文件I/O和标准I/O库的区别? 系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。 系统调用是通过软件中断方式陷入内核的 linux的文件I/O是由操作系统提供的基本IO服务, 标准I/O库通过封装系统调用,提供了一个到底层I/O的接口。 标准I/O默认采用了缓冲机制,还创建了一个包含文件和缓冲区相关数据的数据结构;文件I/O一般没有采用缓冲模式,需要自己创建缓冲区。一种是标准库封装系统调用而成,更高级,一种是系统提供的,比较低级;标准I/O可移植性高、文件I/O可移植性低。 2) 什么是进程?用fork()创建一个子进程时,系统会做什么工作 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配的单位,不仅是系统内部独立运行的实体也是独立竞争资源的实体。 用fork()时系统会分配子进程一个ID号然后继承父进程的地址空间,包括进程上下文进程堆栈打开的文件描述符等等,他就是父进程的一个复制品。 3) 进程和线程有什么区别? 每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在进程程中,由进程提供多个线程执行的控制。 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。 4) 什么是线程的互斥和同步,程序应怎样写才能达到互斥或同步? 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。 在写程序时可以用互斥锁和信号量实现线程同步,一个线程访问共享资源时给这个资源上锁其他线程就不能访问了直到上锁的进程释放互斥锁为止。 5) 什么是僵尸进程?孤儿进程?守护进程? 僵尸进程:僵尸进程是指它的父进程已经退出(父进程没有等待(调用wait/waitpid)它),而该进程dead之后没有进程接受,就成为僵尸进程,也就是(zombie)进程。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成

linux考试知识点汇总.doc

LINUX 考试知识点总结 %1. 填空题 1. 文件权限 %1. 简答题 1. 1 inux 的特点 与Windows 的区別 特点:①.真正的多用户多任务操作系统 %1 .良好的兼容性,开发功能强 %1 .可移植性强 %1 .高度稳定性 %1 .丰富的图形用户界面 区别:①?多用户方面:同一时刻不同的用户访问 %1 .GUI (图形用户界面)方面 Linux 与内核相互独立 Windows 与内核结合 %1 .共享资源的相互访问 rwx rwx rwx 类型 user gro 叩 other d rwx rwx rwx 2. 文件编辑器的基本操作 w 保存 q 退出 q!强制退出 3. 文件链接命令 软链接:In -s 目标 硬链接:In 4. 创建文件/文件夹 touch mkdir 5. 文件不同对比命令 diff 6. 显示文本 cat less more 7. 删除命令 rm rm -f 强制删除 rm -r 递归删除 8. 移动文件/重命名 mv 文件名目标目录 mv 文件名新文件名 9. 复制命令 #cp ~a #cp -r 目录目标目录 #cp 文件名新文件名 文件 文件夹 链接名 rmdir 删除非空文件夹 rmdir -r 递归删除非空文件夹 移动 重命名 保留文件权限复制 复制目录 重命名

3.正则表达式 元字符:元字符名 A $* Linux -> windows 使用 NFS 与 Samba 服务器 Windows -> linux 通过网上邻居 %1 .配置文件 Windows 在注册表 Linux 由指定的存放位置女口: /etc /dev ⑤.域 linux windows 身份验证 无 有 性能 强 弱 可靠性(稳定性) 强 弱 系统管理 有抗拒感 简单易用 安全性 强 弱 功能 强 弱 2. 查找命令归总 find 命令 不根据数据库查找,速度慢,默认区分大小写 在指定的目录开始,递归的搜索各个子目录,查询满足条件的文件并对应采取相关操作 Slocate 命令 slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。 语 法:slocate [-u][-help][-version][-d <目录〉][查找的文件] 使用一u 选项更新数据库数据 whereis whereis 指令会在特定目录屮查找符合条件的文件。这些文件的烈性应属于原始代码, 二进制文件,或是帮助文件 语 法:whereis [-bfmsu][-B < 目录>…]卜M < 目录>...][-S < 目录>...][文件…] which which 指令会在环境变量$PATH 设置的冃录里查找符合条件的文件。 语 法:which [文件…] locate locate 指令用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合 乎范本样式条件的文件或目录。 语 法:locate [-d v 数据库文件>][-help][-version][?a 本样式…] 说明 只匹配行首 只匹配行尾

Linux复习资料整理(jxust)

1、Linux可以运行在两种模式 用户模式和内核模式 2、VFS及其的四个数据结构 虚拟文件系统是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口;它也提供了内核中的一个抽象功能,允许不同的文件系统共存。 系统中所有的文件系统不但依赖VFS共存,而且也依靠VFS协同工作。 四个数据结构:超级块对象、索引结点对象、文件对象以及目录项对象 3、进程号、用户号? Linux系统上所有运行的东西都可以称为一个进程。 进程的基本状态三种:运行态、就绪态和阻塞态(或等待态)。

进程大致上来讲可分为两大类:系统进程与用户进程。 4、Linux进程有五种状态 linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释 放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 5、函数库 人们把大量的基础性操作编写成一个个独立的函数,这些函数具有低耦合、高内聚的特点,这些函数集合成一个已经编译好的不完整的二进制代码文件,就是函数库 写出函数原型或函数功能(字符串、开方) 测试参数所对应的字符是否为拉丁字母 #include int isalpha(int c); 测试参数所对应的字符是否为大写字母(isupper)或小写字母(islower) #include int isupper(int c); int islower(int c); 测试参数所对应的字符是否为阿拉伯数字(isdigit)或十六进制数字(isxdigit) #include int isdigit(int c); int isxdigit(int c);

Linux知识点总结

第一章 1. Linux 是多用户、多任务操作系统。 2. 程序是计算机完成一项任务的指令集合。 3. 数据是由程序使用或生成的不同类型的信息。 4. 软件分为三大类: 1) 系统软件 2) 应用软件 3) 支撑软件 5. 系统软件包括操作系统、编译程序、汇编程序、数据库管理系统、网络软件等。系统软件对计算机系统的资源 进行控制、管理,并为用户的应用和其他程序的运行提供服务。 6. 支撑软件包括编辑程序、查错程序、项目管理程序等。辅助软件技术人员从事软件开发和项目管理人员进行项 目管理工作的软件。 7. 应用软件是为解决某一类应用需要或某个特定问题而设计的程序。 8. Linux 提供4 种不同的用户接口: 1) 命令行接口 2) 菜单 3) 图形用户接口 4) 程序接口 9. 命令解释程序称为shell 。 10. 程序接口也称为系统调用接口。系统调用时操作系统内核与用户程序、应用程序之间的接口。 11. 内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在C 程序中使用,不能作为命令 在终端上执行。由于系统调用能直接进入内核执行,所以执行效率很高。 12. Linux 解决资源使用过程中的冲突,保证资源最后能被系统再次使用所采取的方法: 1) 通过记录和文件加锁,保证数据的完整性 2) 利用调度进程和审计系统 3) 当系统出现错误时,提供错误诊断信息 4) 终止运行不正常的进程,甚至在最坏的情况下停止系统 13. 软件以是否以营利为目的分为三种模式: 1) 商业软件 2) 共享软件 3) 自由软件 14. Linux 用户分为: 1) 个人用 户2) 专业用 户 3) 商业用 户 15. Linux 的特点:(1 )与unix 系统兼容

《Linux编程环境》样题及参考答案

《Linux编程环境》期末考试样题 一.(共20分,每小题2分)给出完成下列各项功能所需要命令。陈述利用了该命令的哪个功能或选项。 1.如何得知命令netstat众多选项中哪个选项可以打印出IP路由表? 答:使用man命令,man命令可以在线查阅命令的使用手册,使用命令man netstat查出netstat命令的使用手册,看看哪个选项和什么命令格式用来打印出ip的路由表。 2.删除文件名为-f的文件。 答:使用rm命令,由于命令会默认以减号开始的命令行参数为命令处理的选项而不是处理对象,所以需要使用特殊的选项--以显式的方式说明选项的结束。命令为rm -- -i 3.在你完成上机作业过程中,使用什么命令将源程序文件mylist.c编译、 链接生成可执行文件?可执行文件是什么名字?如何运行? 答:使用gcc命令或者make,实现编译和链接 gcc mylist.c –o mylist 或者:make mylist 生成的可执行文件名按照惯例为mylist,一般情况下当前环境变量 PATH不包括当前目录,所以,运行这个可执行程序应当加上当前路径,命令为:./mylist 4.去掉文件list.txt中的所有空行(所谓空行指:行内不含有任何除空格之 外的字符),存为新文件list-new.txt。 答:使用grep命令可以用正则表达式对文本文件过滤,-v选项用于筛选掉能匹配指定正则表达式的行,描述一个空行的正则表达式为^ *$,即:从行首开始(^),有零个到多个空格( *),然后是行尾($),命令为: grep –v ’^ *$’ list.txt > list-new.txt 5.检索目录src以及其子孙目录中的所有文件名后缀为.c和.h文件,查找 哪些文件中含有字符串TPDU,并列出在这文件中的行号。 答:使用find命令和grep命令。find命令可以在指定的目录树中查找满足某个条件的文件或目录,并对查找到的满足条件的对象执行一个动作。指定查找条件为“文件名后缀为.c和.h”,动作为“查找哪些文件中含有字符串TPDU,并列出在这文件中的行号”,分别是find的 -name和-exec选项。完整的命令为: find src –name ”*.[ch]”–exec grep –n TPDU {} /dev/null \;

linux基础知识总结

linux基础知识总结 1 linux 概述 1.1 linux 结构 1.1.1 linux的四部分 可以把Linux系统看作由四部分构成:内核、用户界面、文件结构和实用工具 /bin 普通用户的可执行文件,系统的任何用户都可以执行该目录中的命令 /boot 存放Linux操作系统启动时所需要的文件 /dev 系统中所有设备文件 /etc 系统中的配置文件 /home 普通用户的宿主目录,每个用户在该目下都有一个于用户名同名的目录。 /mnt 中的子目录用于系统中可移动设备的挂载点 /root 超级用户root的宿主目录 /sbin 系统中的管理命令,普通用户不能执行 /tmp 系统的临时目录 /usr 系统应用程序的相关文件 /var 系统中经常变化的文件如日志文件和用户邮件 / / \ / \ etc home

/ / / / profilexiaoming / \ 配置系统 .bash_profile 环境变量配置用户的环境变量 环境变量:配置.bashrc文件可以指定某些程序在用户登录的时候就自动启动 系统环境变量设置:在root目录下 Vi .bash_profile 修改PATH=$PATH:$HOME/bin :/安装目录/bin 需要退出(quit),重新登陆 当希望临时加入某个环境变量:用export PATH =$PATH : $HOME /bin:/root/test/t1 已定义好的环境变量: SHELL:默认的shell PATH:路径 USER:当前登录用户的用户名 显示变量内容:echo $PATH echo $USER echo $SHELL 也可以使用env命令显示环境变量 通配符: * 代表多个字母或数字 ?一个 别名: 命令:alias显示系统当前定义的所有alias aliascp ='cp-i' aliasll='ls -l --color = tty' 2. linux 基本命令 2.0 重启 shutdown - h now 立刻关机 shutdown - r now 重启 reboot 重启 2.1 文件查看和连接命令 cat cat[选项]

linux知识点总结

四:thread 1.什么是线程的detach状态?怎样设置? detach状态: 一般情况下,线程终止后,其终止状态一直保留到其它线程调用pthread_join获取它的状态为止。 但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。 不能对一个已经处于detach状态的线程调用pthread_join,这样的调用将返回EINVAL。 设置方法: 对一个尚未detach的线程调用pthread join或 pthread detach都可以把该线程置为detach状态,也就是 说,不能对同一线程调用两次pthread join,或者如果已经对一个线程调用了pthread detach就不能再调用 pthread_join了。 int pthread_detach(pthread_t tid); 返回值:成功返回0,失败返回错误号。 2.叙述函数pthread_join的功能。 函数pthread_join用来等待一个线程的结束,线程间同步的操作。 头文件: #include 函数定义: int pthread join(pthread t th, void **value_ptr ); th: 被等待线程的标识符 value_ptr :用户定义指针,用来存储被等待结束线程的返回值, 调用该函数的线程将挂起等待,直到id为th的线程终止。 3.进程中使用return、exit、pthread exit和pthread cancel分别起到什么作用?return,如果thread线程通过return返回,value_ptr所指向的单元里存放的是thread线程函数的返回值。 exit 终止整个进程。如果进程中的任一线程调用了exit,那么整个进程就会终止。

《Linux程序设计》实验大纲

《Linux程序设计》实验指导书 实验类别:课内实验实验课程名称:Linux程序设计 实验室名称:软件工程专业实验室实验课程编号:N03140112 总学时: 32 学 分: 2 适用专业:软件工程 先修课程: Linux操作系统、C程序设计 实验在教学培养计划中地位、作用: 通过讲授Linux的操作使用、系统结构和Linux环境下的程序设计,使学生对Linux操作系统获得一个全面的认识和掌握。一方面,学生通过学习系统程序设计,能够复习操作系统中的基本概念,对文件管理、进程控制有更深入的理解;另一方面,学生学会在Linux环境下工作,进一步熟悉C语言程序设计和数据结构的知识,编写进行系统维护的脚本文件和实用化的大型应用程序,如网络应用程序。同时,本课程为学生进一步学习其它后续课程(如高级操作系统、Linux内核源代码分析、嵌入式系统等)打下基础。

《Linux程序设计》实验大纲 Linux Program Design 课程类别:学科专业教育课程课程名称:Linux程序设计 开课单位:软件学院课程编号:N03140112 总学时:32 学分:2 适用专业:软件工程 先修课程:程序设计基础 一、实验教学目标 熟练掌握shell编程、熟练使用linux系统、掌握进程控制和进程间通信,学会编写网络程序,学会在linux环境中编写web程序。养成一种良好的程序设计风格。

二、实验环境 Linux 三、实验教材及参考书: [1] 实验指导书(自编讲义) [2]《Linux环境C程序设计》徐诚高莹婷等清华大学出版社2010.1 [3]《linux入门到精通》刘忆智清华大学出版社2010.1 四、实验成绩评定方式 根据学生在实验过程中的认真程度、上机结果验收情况以及实验报告撰写质量,进行综合评定。 五、实验项目及学时分配

linux基础知识与基本命令

Linux基本命令与操作 一:linux基本知识与命令操作 二:linux下的实践(操作系统的安装以及oracle数据库的安装) 三:linux下关于产品的操作(产品环境的部署,备份与恢复) 四:linux服务器的安全配置以及oracle数据库的调优. 一:linux基本知识 1:Linux是由一个芬兰Helsinki大学的学生Linus Torvalds开发的UNIX的克隆。在Linus上大学的时候,由于AT&T与加州大学伯克莱分校在BSD版权问题上发生了法律纠纷,导致BSD的源代码还不能自由使用,所以Linus写了他自己的UNIX版本. 2:Linux只是一个内核,是由Linus Torvalds个人维护的。作为一个完整的系统,Linux中还加入了许多GNU的东西。所以Linux更确切的称呼应该是GNU/Linux。 Linux有很多发行商,像Redhat,SuSe,Caldera,Debian,Slackware等等,它们互相之间是不兼容的,各个厂商都加入了很多自己的东西。所以说Linux正在像当年的UNIX一样走向分裂。不过,幸运的是已经有权威人士意识到了这一点。 3:Linux与UNIX有什么不同? Linux也是属于UNIX家族的一员,它有许多特性是与UNIX相同的,它们之间的最大区别在于以下两点: 1)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上; 2)UNIX是商业软件,而Linux是自由软件,免费、公开源代码的。 常见的unix系统有sun solairs IBM AIX,hp hp-unix. 经过咱们产品测试的unix系统有sun solairs, hp-unix,产品可以在这两种unix系统上运行,理论上产品也可以在IBM AIX上面运行,但是没有经过测试. 4:RedHat Linux有哪些特点? RedHat Linux是最成熟的一种Linux发行版,其无论在销售还是装机量上都是市场上的老大。在中国老一辈Linux爱好者中几乎都是RedHat的使用者。市场上有大量的文章是针对RedHat 来说的。RedHat Linux朴实、简洁、稳定,是作为商业应用、钻研Linux的好平台。 5: RedHat Linux分类 Red Hat linux: (1)Red Hat linux 个人版 (2)Red Hat Enterprise Linux 企业版 Red Hat linux 个人版 linux6.1 7.0 7.3 8.0 9.0 关于7.3(最稳定的版本)

Linux编程基础复习题

选择题 1. /etc目录的标准应用是用于____ A. 安装附加的应用程序 B. 存放可执行程序、系统管理工具和库 C. 设置用户的主目录 D. 存放用于系统管理的配置文件 ##D 2. Apache服务器默认的接听连接端口号是________。 A. 1024 B. 800 C. 80 D. 8 ##C 3. DNS域名系统主要负责主机名和________之间的解析。 A. IP地址 B. MAC地址 C. 网络地址 D. 主机别名 ##A 4. Linux 将存储设备和输入/输出设备均看做文件来操作,________不是以文件的形式出现。 A. 目录 B. 软链接 C. i节点表 D. 网络适配器 ##C 5. Linux 文件名的长度不得超过________个字符。 A. 64 B. 128 C. 256 D. 512 ##C 6. Linux 系统通过________命令给其他用户发消息。 A. less

B. mesg y C. write D. echo to ##C 7. Linux内核遵守的是下面哪一种许可条款________。 A. GDK B. GDP C. GPL D. GNU ##C 8. Linux包含了一个名称是________的调试程序,它是用来调试C或C++程序的强力调试器,它使用户能在程序运行时观察程序的内部结构和内存的使用情况。 A. gcc B. make C. gdb D. autoconf ##C 9. Linux命令行是由____提供的。 A. 管道 B. 分层结构文件系统 C. 文本处理器 D. shell ##D 10. Linux工作目录用________表示 A. . B. , C. * D. # ##A 11. Linux操作系统的创始人和主要设计者是________ A. Redhat Linux B. AT&T Bell实验室 C. 赫尔辛基大学 D. Linus Torvalds ##D 12. Linux文件权限一共10位长度,分成四段,第三段表示的内容是________。 A. 文件类型 B. 文件所有者的权限

最新Linux复习大汇总

第一章概述 1、什么是POSIX标准,为什么现代造作系统的设计必须遵循POSIX标准? 答:POSIX表示可移植操作系统接口(Portable Operating System Interface)。 POSIX是在Unix标准化过程中出现的产物。 POSIX 1003.1标准定义了一个最小的Unix操作系统接口。 任何操作系统只有符合这一标准,才有可能运行Unix程序。 2、什么是GNU?Linux与GNU有什么关系? 答:GNU是GNU Is Not Unix的递归缩写,是自由软件基金会的一个项目。 GNU项目产品包括emacs编辑器、著名的GNU C和Gcc编译器等,这些软件叫做GNU 软件。 GNU软件和派生工作均适用GNU通用公共许可证,即GPL(General Public License)。 Linux的开发使用了众多的GUN工具。 3、Linux系统由哪些部分组成?Linux内核处于什么位置? 答:(1)符合POSIX标准的操作系统内核、Shell和外围工具。(2)C语言编译器和其他开发工具及函数库。(3)X Window窗口系统。(4)各种应用软件,包括字处理软件、图象处理软件等。 Linux内核是所有Linux 发布版本的核心。 第二章内存寻址 1、在80x86的寄存器中,哪些寄存器供一般用户使用?哪些寄存器只能被操作系统使用?答:通用寄存器EAX,EBX,ECX,EDX,EBP(基址指针),ESP(堆栈指针),ESI(扩展源指针),EDI(扩展目的指针),还有EFLAGS(标志寄存器). 专供操作系统使用的寄存器:IDTR中断描述符寄存器,GDTR全局描述符表寄存器,LDTR 局部描述符表寄存器,TaskRegisters任务寄存器,DebugRegister调试寄存器,ControlRegister 控制寄存器,Model-SpecificRegisters模型专用寄存器。 3、请用C语言描述段描述符表。 答:#include #include #define BASE_H 0xff00 #define BASE_M 0x00ff #define BASE_L 0xffff #define LIMIT_H 0x000f

linux系统编程考试(答案)

linux系统编程考试(答案)

————————————————————————————————作者:————————————————————————————————日期:

凌阳教育 嵌入式培训系统编程部分测试试题 注:考试为闭卷,程序题需上机操作运行出结果,考试时间为120分钟 一:选择题(本题共4小题,每题3分共12分) 1)下列不是Linux系统进程类型的是( D ) A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态) 2)以下对信号的理解不正确的是( B ) A 信号是一种异步通信方式 B 信号只用在用户空间进程通信,不能和内核空间交互 C 信号是可以被屏蔽的 D 信号是通过软中断实现的 3)进程有三种状态( C ) A 准备态、执行态和退出态 B 精确态、模糊态和随机态 C 运行态、就绪态和等待态 D 手工态、自动态和自由态 4)不是进程和程序的区别( B) A 程序是一组有序的静态指令,进程是一次程序的执行过程 B 程序只能在前台运行,而进程可以在前台或后台运行 C 程序可以长期保存,进程是暂时的 D 程序没有状态,而进程是有状态的 二:填空题(本题共6小题,2)、3)两题每空四分,其余每空一分。共23分) 1) 列举八种常见的进程间通信方式无名管道、有名管道、消息队列、信号量、共享内存、信号、套接字 网络上两个主机的进程间通信方式为套接字 2) 命名管道比无名管道的优势提供了一个可以访问的路径名,实现没亲缘关系的进程 间通信 3) 消息队列比命名管道和无名管道的优势可以按类型实现消息的随机查询,没必要先 进先出 4) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库 5) 在C语言中操作sqlite数据库,常用的2中方式是sqlite_exec(回调)、

linux考试重点总结

Bootload的两个阶段: 阶段1主要包含依赖于CPU体系结构的硬件初始化代码,而且通常都是用汇编语言来实现的,以达到短小精悍的目的。这个阶段通常包括以下步骤: (1)硬件设备初始化。这是BootLoader开始就执行的操作,其目的是为阶段2的执行,以及随后内核的执行准备好基本的硬件环境。 (2)为加载BootLoader的阶段2准备RAM空间。为了获得更快的执行速度,通常把阶段2加载到RAM空间来执行。 (3)拷贝BootLoader阶段2的代码到RAM空间中。 (4)设置好堆栈。 (5)跳转到阶段2的C程序入口点。 阶段2通常用C语言来实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和可移植性。通常包括以下步骤: (1)初始化本阶段要使用到的硬件设备。 (2)检测系统内存映射。 (3)将内核映像和根文件系统映像从Flash上读到RAM空间中。 (4)为内核设置启动参数。 (5)调用内核。 什么是嵌入式系统: 嵌入式系统是以应用为中心,以计算机技术为基础,其软/硬件可裁减,可满足应用系统对功能、可靠性、成本、体积、功耗的严格要求的专用计算机系统。 嵌入式系统的基本特点: 面向特定应用、设计高效、综合性强、生命周期长、程序固化、需要独立的开发系统、可靠性高、成本低、功耗低、体积小。 嵌入式系统的发展趋势: 产品种类不断丰富,应用范围不断普及;性能不断提高;功耗不断降低,体积不断缩 小;网络化、智能化程度不断提高;软件成为影响价格的主要因素。 嵌入式处理器的特点: 低档处理器多采用哈佛结构,高档处理器多采用冯·诺伊曼结构;品种规格系列化;对实时多任务有很强的支持能力;可靠性高、功耗低、集成度高、性价比高。 嵌入式处理器的选择原则: 1、应能满足应用的设计目标; 2、开发工具是否好用? 3、市场占有率; 4、应该遵循“够用”原则,不应片面追求高性能。

Linux职业认证考试50必考知识点

Linux职业认证考试50必考知识点 以下是Linux 职业认证考试 (the Linux Professional Institute Certification-----LPI)的一些知识点, 大家有兴趣可以测一下. 硬件和体系结构 1. /proc/interrupts 文件显示当前系统中正在使用的中断. 2. Linux支持标准串/并口和游戏棒口. /dev目录下对应每个设备/端口有一个文件.setserial命令用于显示修改串口配置. 3. dmesg命令可显示Linux在启动时发现了哪些硬件. 4. fdisk用于硬盘分区. newe2fs用于建立文件系统. mount 用于将分区挂在总文件树上. 5. ifconfig是最常用的网络配置工具. ping通过发送ICMP消息观察一台网上机器是否可被连通. RedHat的sndconfig用于配置声卡. minicom用于配置modem. 6. PPP协议是最通用的串行通讯协议. /etc/ppp/options中有PPP的配置信息. PAP(Password Authentication Protocol)和CHAP(Challenge Handshake Authentication Protocol)是PPP下最流行的两个认证协议. 系统安装和软件包安装

7. hda 表示第一个IDE盘, hda1是它的第一个分区. sda表示第一个SCSI盘, sda1是它的第一个分区. 8. swap分区的大小应至少和内存大小一样. root分区应尽量小.data/user等分区越细, 备份就越容易. 9. 分区完成后, 可以用mke2fs建立文件系统. 10. /etc/lilo.conf 中有Lilo的配置信息. 编辑完此文件后必须运行/sbin/lilo安装LILO bootloader. 11. tarball是最方便的打包工具. "x"选项用于解包, "c" 选项用于打包, "v"选项提供更多过程信息. "f"选项用于指明包文件名. 12. make使用Makefile文件提供的编译参数命令编译系统. "configure"脚本用于软件的环境配置. 13. 动态共享库方便不同的软件共享库函数, 而且在库升级时, 使用它的软件无需重新编译. ldd命令用于显示软件的共享库使用 情况. ldconfig命令用于更新维护系统的共享库数据缓存(cache of shared library data). "ldconfig -p"显示当前的共享库缓存. 14. 软件包管理工具有RedHat的RPM和Debian的dpkg. 15. rpm选项包括: -i 安装包 -e 卸载包

linux知识点总结

七: 1.叙述的文件系统框架,并解释其中各个部分。 :启动相关的程序和配置 :常用的命令,这些命令通常为可执行文件或这些文件的链接 :通常为根用户准备的命令 :系统常用库 :用户安装的文件、库、开发库等 :根用户的用户文件 :普通用户的用户文件 :系统或程序的配置文件 :系统中服务器数据、日志 :系统状态信息 :系统设备 、:其他分区的挂载点(如磁盘分区、光盘或软件等) :临时文件 磁盘孤立扇区 2.叙述超级块、、和四大数据结构的作用和主要内容。 超级块: 作用:代表了整个文件系统,记录了文件系统的整体信息 内容:文件系统的状态、文件系统类型、块大小、区块数、索引节点数、脏标志、操作方法

(索引节点) 作用:代表了操作系统中的一个文件,无论该文件是否被打开,它都包含了文件操作的所有信息 内容:文件大小,设备标识符,用户标识符,用户组标识符,文件模式,扩展属性,文件读取或修改的时间戳,链接数量,指向存储该内容的磁盘区块的指针,文件分类等等。 (目录项): 作用:代表了一个目录,用来组成文件的路径,并利用其实现路径的管理 内容:包括该目录对象对应的索引节点,子目录链表,父目录目录项对象,与它同级的目录的目录项对象链表,使用计数,缓存标志 (文件): 作用:代表了被进程打开的文件,是可以读写的实体 内容:包括相应的目录项对象、使用计数、访问模式、当前偏移量、操作方法等 3.什么是文件描述符?它与返回的文件指针有什么关系? 文件描述符是一个索引值,指向内核为每一个进程所维护 的该进程打开文件的记录表。 关系:返回的文件指针是文件描述符所指向的文件描述符表中的一个表项 4.分别叙述和的参数设置以及它们的区别。

Linux基础知识的总结

Linux基础知识总结 一.课程结构: (一)预科部分: 1.初始Linux (1)了解Linux的历史 (2)对Linux操作系统的认知 (3)体会Linux的优点 (4)理解Linux的基本思想 2.学会如何安装Linux操作系统 3.掌握Linux下的常规操作(登陆和注销) 4.了解Linux的目录结构 5.掌握Linux下的常规操作 6.Linux下的常规网络配置 7.制作yum源(本地、远程)及yum命令的基本操作 (二)Linux系统知识: 1.RedHat7下图形界面使用(包括gedit使用)、字符界面和图形界面的切换 2.使用nautilus以图形方式管理文件(显示隐藏文件、访问远程ftp) 3.熟悉redhat的文档阅读(redhat官方网站下载或者在本地owncloud处下载redhat7文档并阅读) 4.配置本机系统时钟(ntpdate、system-config-date使用) 5.shell的简介和使用 6.管理物理存储(磁盘分区) 7.使用LVM灵活存储(LVM的创建、使用、扩展、销毁) 8.使用man手册获取帮助 9.查看管理系统进程(关键字:ps、top、kill使用) 10.建立网络链接(关键字:DNS、子网掩码、ping) 11.系统服务的管理(关键字:systemctl) 12.管理系统用户和组 13.文件权限(文件权限的意义和修改) 14.使用ssh远程管理系统(关键字:公私钥、ssh-keygen) 15.apache、vsftpd和vnc服务器的配置 16.管理物理存储(关键字:tune2fs、swap交换分区) 17.seLinux和iptables基本设置(设置文件的seLinux标签、关闭打开iptables) 18.软链接和硬链接(ln命令) 19.归档和压缩(关键字:tar命令)

《Linux编程基础》复习题v2.doc

选择题 1./etc目录的标准应用是用于_ A.安装附加的应用程序 B.存放可执行程序、系统管理工具和库 C.设置用户的主目录 D.存放用于系统管理的配置文件##D 2.Apache服务器默认的接听连接端口号是________ 。 A.1024 B.800 C.80 D.8 ##C 3.DNS域名系统主要负责主机名和________ 之间的解析。 A.IP地址 B.MAC地址 C.网络地址 D.主机别名 林林A 4.Linux将存储设备和输入/输出设备均看做文件来操作,________ 不是以文件的形式出现。 A.□录 B.软链接 C.i节点表 D.M络适配器 ttttc 5.Linux文件名的长度不得超过________ 个字符。 A.64 B.128 C.256 D.512 ##C 6.Linux系统通过________ 命令给其他用户发消息。 A.less B.mesg y C.write D.echo to ttttc

7.Linux内核遵守的是下面哪一种许可条款________ 。 A.GDK B.GDP C.GPL D.GNU ttttc 8.Linux包含了一个名称是________ 的调试程序,它是用来调试C或C++程序的强力凋试器,它使用户能在程序运行吋观察程序的内部结构和内存的使用情况。 A.gcc B.make C.gdb D.autoconf ##C 9.Linux命令行是由____ 提供的。 A.管道 B.分层结构文件系统 C.文木处理器 D.shell ##D 10.Linux工作目录用________ 表示 A.? C.* D.# ##A 11.Linux操作系统的创始人和主要设计者是_________ A.Redhat Linux B.AT&T Bell 实验室 C.赫尔辛基大学 D.Linus Torvalds ttttD 12.Linux文件权限一共10位长度,分成四段,第三段表示的内容是_________ A.文件类型 B.文件所有者的权限 C.文件所冇者所在组的权限 D.其他用户的权限 ##C 13.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在________ 目录中。 A./bin B./etc C./dev

相关主题
文本预览
相关文档 最新文档