Linux系统编程-文件操作

Linux系统编程-文件操作
Linux系统编程-文件操作

最基本的访问文件方法是:使用read()和write()系统调用。在一个文件能被访问之前,必须通过open()

或者creat()系统调用打开它,一旦使用完毕,则用close()系统调用来关闭文件。

1.open

#include

#include

#include

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

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

返回值:成功返回新分配的文件描述符,出错返回-1并设置errno

eg:

int fd;

fd = open("/home/kidd/aaa",O_RDONLY);

if(fd == -1)

/*error*/

pathname 参数是要打开或创建的文件名,和fopen一样,pathname 既可以是相对路径也可以是绝对路径。

flags参数有一系列常数值可供选择,可以同时选择多个常数用按位或运算符连接起来,

所以这些常数的宏定义都以O_开头,表示or 。

以下三个三先一:

O_RDONLY 只读打开

O_WRONLY 只写打开

O_RDWR 可读可写打开

以下可多选(以或的形式)(进行按位或运算,用以修改打开文件请求的行为)

O_APPEND

表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容。

(文件将以追加模式下打开。就是说,在每次写操作之前,文件位置指针将被置于文件末尾,即使

在进程刚刚完成写操作并改变文件位置指针之后,如有另一进程开始写操作,情形也是如此。)O_CREAT

若此文件不存在则由(内核来)创建它。使用此选项时需要提供第三个参数mode,表示该文件的访问权限。

有0666。如果文件已存在,本标志无效,除非给出了O_EXCL标志。

当文件创建时,mode参数提供新建文件的权限。系统并不在该次打开文件时检查权限,所以你可以进行相反的操作,例如设置文件为只读权限,但却在打开文件后进行写操作。最终写入磁盘的权限位还需让mode参数与用户文件创建的掩码(即umask)做按位与操作后来确定。 umask 022,mode 0666,文件权限为0644(0666&~022)

O_EXCL

如果同时指定了O_CREAT,并且文件已存在,则出错返回。(用来防止文件创建时出现单键竞争。)O_TRUNC

如果文件已存在且为普通文件,并且以只写或可读可写方式打开,则将其长度截断(Truncate)为0字节。

对于FIFO或者终端设备,该参数被忽略。在其他文件类型上则没有定义。因为截断文件需要写权限,所以O_TRUNC和O_RDONLY同时使用也是没有定义的。

eg: int fd;

fd = open("/home/teach/pearl", O_WRONLY|O_TRUNC);

if(fd == -1)

/*error*/

O_NONBLOCK

对于设备文件,以O_NONBLOCK方式打开可以做非阻塞I/O (Nonblock I/O )。

例子:下面的代码对文件file进行写操作。如果文件不存在,且假定umask值为022,将建立权限值为0644的文件(即使mode参数指定为0664)。如果文件已存在,它的长度会被截断成0。

int fd;

fd =

open(file,O_WRONLY|O_CREAT|O_TRUNC,S_IWUSR|S_IRUSR|S_IWGRP|S_IRGRP|S_IROTH);

if(fd == -1)

/*error*/

补充:mode参数可以是以下内容:

S_IRWXU 所有者拥有读写和执行权限

S_IRUSR 所有者拥有读权限

S_IWUSR 所有者拥有写权限

S_IXUSR 所有者拥有执行权限

S_IRWXG 组拥有读写和执行权限

S_IRGRP 组拥有读权限

S_IWGRP 组拥有写权限

S_IXGRP 组拥有执行权限

S_IRWXO 任何其他人都有读写和执行权限

S_IROTH 任何其他人都有读权限

S_IWOTH 任何其他人都有写权限

S_IXOTH 任何其他人都有执行权限

函数与C 标准I/O 库的fopen函数有些细微的区别:

1 以可写的方式fopen一个文件时,如果文件不存在会自动创建,而open一个文件时必须明

确指定O_CREAT才会创建文件,否则文件不存在就出错返回。

2 以w 或w+方式fopen一个文件时,如果文件已存在就截断为0 字节,而open一个文件时必须

明确指定O_TRUNC才会截断文件,否则直接在原来的数据上改写。

第三个参数mode指定文件权限,可以用八进制数表示,比如0644表示-rw-r--r--

实验

1.umask

0022

用touch命令创建一个文件时,创建权限是0666,而touch进程继承了Shell进程的umask掩码,

所以最终的文件权限是0666&~022=0644 。

2.touch aaa.c

ll aaa.c

-rw-r--r-- 1 root root 0 01-30 14:18 aaa.c

同样道理,用gcc 编译生成一个可执行文件时,创建权限是0777,而最终的文件权限

是0777&~022=0755 。

gcc aaa.c

ll a.out

-rwxr-xr-x 1 root root 4943 01-30 14:20 a.out

3.umask 0

再重复上述实验

Given a pathname for a file, open() returns a file descriptor, a small, non-negative integer for use in

subsequent system calls (read(2), write(2), lseek(2),

fcntl(2), etc.). The file descriptor returned by a suc-

cessful call will be the lowest-numbered file descriptor

not currently open for the process.

The parameter flags must include one of the following access modes: O_RDONLY, O_WRONLY, or O_RDWR. These

request opening the file read-only, write-only, or

read/write, respectively.

In addition, zero or more file creation flags and file status flags can be bitwise-or’d in flags. The file

creation flags are O_CREAT, O_EXCL, O_NOCTTY, and

O_TRUNC. The file status flags are all of the remaining

flags listed below. The distinction between these two

groups of flags is that the file status flags can be

retrieved and (in some cases) modified using fcntl(2).

The full list of file creation flags and file status

flags is as follows:

O_APPEND

The file is opened in append mode. Before each

write(), the file offset is positioned at the end

of the file, as if with lseek(). O_APPEND may

lead to corrupted files on NFS file systems if

more than one process appends data to a file at

once. This is because NFS does not support

appending to a file, so the client kernel has to

simulate it, which can’t be done without a race

condition.

O_CREAT

If the file does not exist it will be created.

The owner (user ID) of the file is set to the

effective user ID of the process. The group own-

ership (group ID) is set either to the effective

group ID of the process or to the group ID of the

parent directory (depending on filesystem type

and mount options, and the mode of the parent

directory, see, e.g., the mount options bsdgroups

and sysvgroups of the ext2 filesystem, as

described in mount(8)).

O_EXCL

When used with O_CREAT, if the file already

exists it is an error and the open() will fail.

In this context, a symbolic link exists, regard-

less of where it points to. O_EXCL is broken on

dition. The solution for performing atomic file

locking using a lockfile is to create a unique

file on the same file system (e.g., incorporating

hostname and pid), use link(2) to make a link to

the lockfile. If link() returns 0, the lock is

successful. Otherwise, use stat(2) on the unique

file to check if its link count has increased to

2, in which case the lock is also successful.

O_NONBLOCK or O_NDELAY

When possible, the file is opened in non-blocking

mode. Neither the open() nor any subsequent oper-

ations on the file descriptor which is returned

will cause the calling process to wait. For the

handling of FIFOs (named pipes), see also

fifo(7). For a discussion of the effect of

O_NONBLOCK in conjunction with mandatory file

locks and with file leases, see fcntl(2).

O_TRUNC

If the file already exists and is a regular file

and the open mode allows writing (i.e., is O_RDWR

or O_WRONLY) it will be truncated to length 0.

If the file is a FIFO or terminal device file,

the O_TRUNC flag is ignored. Otherwise the effect

of O_TRUNC is unspecified.

The argument mode specifies the permissions to use in case a new file is created. It is modified by the pro- cess’s umask in the usual way: the permissions of the created file are (mode & ~umask). Note that this mode only applies to future accesses of the newly created file; the open() call that creates a read-only file may well return a read/write file descriptor.

RETURN VALUE

open() and creat() return the new file descriptor, or -1 if an error occurred (in which case, errno is set appro- priately).

ERRORS

EACCES

The requested access to the file is not allowed,

or search permission is denied for one of the

directories in the path prefix of pathname, or

the file did not exist yet and write access to

the parent directory is not allowed. (See also

EEXIST

pathname already exists and O_CREAT and O_EXCL

were used.

EFAULT

pathname points outside your accessible address space.

creat() is equivalent to open() with flags equal to

O_CREAT|O_WRONLY|O_TRUNC.

creat("aa.c",0666); open("aa.c",O_CREAT|O_WRONLY|O_TRUNC,0666);

2.close

#include

int close(int fd);

返回值:成功返回0 ,出错返回-1并设置errno

close()调用解除了已打开的文件描述符的关联,并分离进程和文件的关联。给定的文件描述符不再有效,内核可以随意将其作为随后的open()或creat()调用的返回值而重新使用。

用法:

if(close(fd) == -1)

perror("close");

参数fd是要关闭的文件描述符。需要说明的是,当一个进程终止时,内核对该进程所有尚未关闭的文件描述符调用close关闭,所以即使用户程序不调用close,在终止时内核也会自动关闭

它打开的所有文件。但是对于一个长年累月运行的程序(比如网络服务器),打开的文件描述

符一定要记得关闭,否则随着打开的文件越来越多,会占用大量文件描述符和系统资源。

要注意的是:关闭文件和文件写入磁盘没什么关系。如果想保证文件在关闭前写到磁盘中,需要使用一个先前在“同步I/O”中讨论的同步选项。

关闭文件的副作用:当最后一个引用某文件的文件描述符关闭后,在内核中表示该文件的数据结构就被释放了。当它释放时,与文件关联的inode的内存拷贝被清除。如果没什么连接到该inode了,它可能会从内存中清除(也有可能保留在内存中,因为内核为了效率缓存一些inode,但也可能不需要)。如果文件已经从磁盘上解除链接,但在解除前仍保持打开,它在被关闭且inode从内存中移除前就不会真的被删除。因而,对close()的调用可能会使某个已解除链接的文件最终从磁盘上被删除。

================================================================================== close()

closes a file descriptor, so that it no longer

refers to any file and may be reused. Any record locks

(see fcntl(2)) held on the file it was associated with,

and owned by the process, are removed (regardless of the

file descriptor that was used to obtain the lock).

3作业

1.打开文件/home/akae.txt用于写操作,以追加方式打开.

int fd;

fd = open("/home/akae.txt", O_WRONLY | O_APPEND);

perror("open");

exit(1);

}

2.打开文件/home/akae.txt用于写操作,如果该文件不存在则创建它,创建权限为0666.

fd = open("/home/akae.txt", O_WRONLY | O_CREAT,0666);

if (fd == -1)

{

perror("open");

exit(1);

}

3.打开文件/home/akae.txt用于写操作,如果该文件已存在则截断为0 字节,如果该文件不

存在则创建它,创建权限为0666.

fd = open("/home/akae.txt", O_WRONLY|O_CREAT|O_TRUNC,0666);

4.打开文件/home/akae.txt用于写操作,如果该文件已存在则报错退出,如果该文件不存在

则创建它,创建权限为0666.

fd = open("/home/akae.txt", O_WRONLY|O_CREAT|O_EXCL|O_TRUNC,0666);

---------------------------------------------------------------------------------- 3 creat()函数

O_WRONLY|O_CREAT|O_TRUNC 组合经常被使用,以至于专门有个系统调用来实现

#include

#include

#include

int creat(const char *name, node_t mode);

典型的creat()调用如下:

int fd;

fd = creat(file,0644);

if(fd == -1)

/*error*/

等价于:

int fd;

fd = open(file,O_WRONLY|O_CREAT|O_TRUNC,0644);

if(fd == -1)

/*error*/

即使可以在用户空间上简单creat()的功能,但是在大部分Linux架构上creat()是一个系统调用:int creat(const char *name,int mode)

{

return open(name,O_WRONLY|O_CREAT|O_TRUNC,mode);

}

open()和creat()调用成功时都返回一个文件描述符(int型)。错误时都返回-1,并将errno设置为一个合适的错误值。处理文件打开的错误并不复杂,一般来说,在的打开文件操作前不需要什么处理,典型的方式是提示用户换个文件或终止程序。

------------------------------------------------------------------------------------- 4 read函数从打开的设备或文件中读取数据

#include

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

该系统调用从由fd指向的文件的当前偏移量至多读count个字节到buf中。成功时,将返回写入buf中的字节数。出错时返回-1,并设置errno.fd所指文件位置指针将会向前移动,移动的长度由之前读取的字节数决定。如果无法在该文件(比如一个字符设备文件)中确定文件位置,读操作总是从“当前”位置开始。

参数count是请求读取的字节数,读上来的数据保存在缓冲区buf 中,同时文件的当前读写位置向后移。注意返回值类型是ssize_t,表示有符号的size_t ,这样既可以返回正的字节数、0 (表示到达文件末尾)也可以返回负值-1 (表示出错)。read函数返回时,返回值说明了buf 中前多少个字节是刚读上来的。有些情况下(比如马上到文件末尾了,不够count个字节了),实际读到的字节数(返回值)会小于请求读的字节数count.

例如:

1,读常规文件时,在读到count个字节之前已到达文件末尾。例如,距文件末尾还有30个字

节而请求读100 个字节,则read返回30,下次read将返回0 。

2,从终端设备读,通常以行为单位,读到换行符就返回了。

3,从网络读,根据不同的传输层协议和内核缓存机制,返回值可能小于请求的字节数,后

面socket 编程部分会详细讲

例子:

从fd所指的文件中读取数据并保存到word中,读取字节数等于unsigned long类型的大小,在32位Linux 系统上是4字节,而在64位系统则是8字节。返回时,nr保存读取字节数,如果出错,则nr为-1:unsigned long word;

ssize_t nr;

/*read a couple bytes into 'word' from 'fd' */

nr = read(fd,&word,sizeof(unsigned long)); //把指针fd的数据读取到word中,读count个if(nr == -1)

/*error*/

可能出现的问题:

1,返回一个比count小的非0正整数。可能可供读取的字节数本来就比count要少、系统调用可能被信号打断、管理可能被破坏(如果fd是个管道)......

2,返回0。当已位于文件尾时,read()系统调用返回0,说明已经到达文件结尾(EOF),这种情况下当然没有字节被读入。EOF并不是一种错误,也回此不用返回-1;它仅仅表示文件位置指针已经位于文件最

后一个有效偏移量之后,之后没有任何数据可读了。然而,如果一个调用需要读count个字节,但

却没一个字节可读,调用将阻塞(睡眠),直到那些字节可以读取为止(假设文件描述符没有在非阻塞

模式下打开)。注意这与返回EOF时不同。就是,“没有数据可读”和“数据末尾”是不同的。在EOF的

情况下,到达了文件末尾。在阻塞的情况下,读操作在等待更多的数据--例如在从套接字或者设备文件

读取的时候。

有些错误是可以恢复的。比如,当read()调用在未读取任何字节前被一个信号打断,它会返回-1(如果为0,则可能和EOF混淆),并设置errno为EINTR。在这种情况下,你可以重新提交读取请求。

对read()的调用会出现的结果:

1,调用返回一个等于count的值。所有count个被读取字节存储在buf中。结果和预期一致。

2,调用返回值在(0~count)之间。读取的字节存入buf中。这种情况出现在一个信号打断了读取过程,或在读取中发生了一个错误,有效字节大于0,但比count字节少时,或者在读入count个字节前已抵达EOF。

再次进行读取(更新了buf和count的值)将读入剩余字节到buf的剩余空间中,或者指出问题发生的原因。

3,调用返回0.这标志着EOF。没有可以读入的数据。

4,调用阻塞了,因为没有可用的用来读取的数据。这在非阻塞模式下不会发生;

5,调用返回-1.并且errno被设置为EINTR。这表示在读入字节之前收到了一个信号。可以重新进行调用。

6,调用返回-1,并且errno被设置为EAGAIN。这表示读取会因没有可用的数据而阻塞,而读请求应该在之后重开。这只在非阻塞模式下发生。

====================================================

DESCRIPTION

read() attempts to read up to count bytes from file

descriptor fd into the buffer starting at buf.

RETURN VALUE

On success, the number of bytes read is returned (zero

indicates end of file), and the file position is

advanced by this number. It is not an error if this

number is smaller than the number of bytes requested;

this may happen for example because fewer bytes are

actually available right now (maybe because we were

close to end-of-file, or because we are reading from a

pipe, or from a terminal), or because read() was inter-

rupted by a signal. On error, -1 is returned, and errno

is set appropriately.

ERRORS

EAGAIN

Non-blocking I/O has been selected using O_NON-BLOCK

and no data was immediately available forreading.

EINTR

The call was interrupted by a signal before any data was read.

读入所有的字节方法:

想要处理所有的错误,并且读入所有count个字节(至少读到EOF):

ssize_t ret;

while(count !=0 && (ret = read(fd,buf,count))!=0)

{

if(ret == -1)

{

if(errno == EINTR)

continue;

perror("read");

break;

}

count -= ret;

buf += ret;

}

/*

*这段代码处理了所有五种情况。循环从fd所指的当前文件位置读入count个字节到buf中,读入会一直*到读完所有count个字节或者到EOF为止。如果读入了多于0个但少于count个字节,从count中减去*已读字节数,buf增加相应数量的字节数,并重新调用read()。如果调用返回了-1,并且errno等于EINTR *,将重新调用且不更新参数。如果调用返回-1,且errno被设置为其他值,将调用perror()来向标准错*误打印一条描述并终止循环。

*/

非阻塞读:

在没有可读数据时,让调用立即返回,被成为非阻塞I/O。它允许应用在从不阻塞的状况下进行I/O操作,如果

返回-1,且设置errno 为EAGAIN 面不是阻塞掉。在进行非阻塞I/O 时,必须检查EAGAIN ,否则将可能因数据缺失面导致严重的错误。

char buf[100]; //100也可以是其他数字

ssize_t nr;

if(count >SSIZE_MAX)

count = SSIZE_MAX;

start:

nr = read(fd,buf,100);//一个count 为0的read()调用结果是立即返回,且返回值为0

if(nr == -1)

{

if(errno == EINTR) goto start;/*oh shush*/

if(errno == EAGAIN)

/*resubmit later*/

else

/*error*/

}

5.write()函数向打开的设备或文件中写数据

SYNOPSIS

#include

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

一个write()调用从由文件描述符fd 引用文件的当前位置开始,将buf 中至多count 个字节写入文件中。不支持定位的文件(像字符设备)总是从“开头”开始写。

成功时,返回写入字节数,并更新文件位置。错误时,返回-1,并将errno 设置为相应的值。一个write()可以返回0,但这种返回值没有任何特殊含义,只是表示写入了0个字节。

基本用法:

const char *buf = "my ship is solid!";

ssize_t nr;

/*write the string in 'buf' to 'fd'*/

nr = write(fd,buf,strlen(buf));

if(nr == -1)

/*error*/

与read()一样,这种简单用法并不大合适,调用者也需要检查出现部分写的各种可能情况:

unsigned long word = 1720;

size_t count;

ssize_t nr;

count = sizeof(word);

nr = write(fd,buf,count);

if(nr == -1)

/*error*/

if(nr != count)

/*possible error,but 'errno' not set*/

写常规文件时,write 的返回值通常等于请求写的字节数count ,而向终端设备或网络写则不一 在处理EAGAIN 时使用一个goto start 可能实际上没什么意义--大概只需要不使用非阻塞I/O 即可。使用它并不能节省时间,相反还引入了更多的循环带来的开销。

网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网

络上没有接收到数据包,调用read从网络读就会阻塞,至于会阻塞多长时间也是不确定的,如

果一直没有数据到达就一直阻塞在那里。同样,写常规文件是不会阻塞的,而向终端设备或网

络写则不一定。

相对于read()的返回部分读的情况,write()不太可能返回一个部分写的结果。而且,对write()系统调用来说没有EOF情况。对于普通文件,除非发生一个错误,否则write()将保证写入所有的请求。对于普通文件,就不需要进行循环写了。然而对于其他类型--例如套接字---大概得有个循环来保证你真的写入了所有请求原字节。使用循环的另一个好处是,第二次write()调用可能会返回一个错误值用来说明第一次调用为什么进行了一部分写(尽管这种情况不大常见)。请看下面代码:

ssize_t ret,nr;

while(count != 0 && (ret = write(fd,buf,count)) !=0)

{

if(ret == -1)

{

if(errno == EINTR)

continue;

perror("write")

break;

}

}

非阻塞写:

当fd在非阻塞模式下打开时(通过设置O_NONBLOCK参数),并且发起的写操作会正常阻塞时,writ()系统调用返回-1,并设置errno值为EAGAIN。请求应该在稍后重新发起,通常处理变通文件时不会出现这种事。

write()大小限制:

如果count比SSIZE_MAX还大,write()调用的结果是未定义的。count值为0的write()调用将立即返回且返回值为0.

==================================================

DESCRIPTION

write() writes up to count bytes to the file referenced

by the file descriptor fd from the buffer starting at

buf. POSIX requires that a read() which can be proved

to occur after a write() has returned returns the new

data. Note that not all file systems are POSIX conform-

ing.

RETURN VALUE

On success, the number of bytes written are returned

(zero indicates nothing was written). On error, -1 is

returned, and errno is set appropriately. If count is

zero and the file descriptor refers to a regular file, 0

may be returned, or an error could be detected. For a

special file, the results are not portable.

ERRORS

EAGAIN

Non-blocking I/O has been selected using O_NON-

BLOCK and the write would block.

EINTR

The call was interrupted by a signal before any

data was written.

现在明确一下阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠

(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收

到数据包,或者调用sleep指定的睡眠时间到了)它才有可能继续运行。与睡眠状态相对的是运

行(Running )状态,在Linux内核中,处于运行状态的进程分为两种情况:

1. 正在被调度执行。CPU处于该进程的上下文环境中,程序计数器(eip )里保存着该进程

的指令地址,通用寄存器里保存着该进程运算过程的中间结果,正在执行该进程的指令,

正在读写该进程的地址空间。

2. 就绪状态。该进程不需要等待什么事件发生,随时都可以执行,但CPU暂时还在执行另一

个进程,所以该进程在一个就绪队列中等待被内核调度。系统中可能同时有多个就绪的进

程,那么该调度谁执行呢?内核的调度算法是基于优先级和时间片的,而且会根据每个进

程的运行情况动态调整它的优先级和时间片,让每个进程都能比较公平地得到机会执行,

同时要兼顾用户体验,不能让和用户交互的进程响应太慢。

------------------------------------------------------------------------------------- 6、用lseek()查找

#include

#include

off_t lseek(int fd, off_t pos, int origin);

调用在成功时返回新文件位置。错误时返回-1并设置适当的errno值。

lseek()的行为依赖于初始参数,可以为以下值之一:

SEEK_CUR 当前文件位置fd设置为当前值加上pos,pos可以为负值、0、正值。一个为0的pos返回当前文件位置值。

SEEK_END 当前文件位置fd设置为当前文件长度加上pos,pos可以为负值、0、正值。一个为0的pos 设置偏移量为文件末尾。

SEEK_SET 当前文件位置fd设置为pos,一个为0的pos设置偏移量为文件起始。

例子:

--设置文件位置fd为1825:

off_t ret;

ret = lseek(fd,(off_t)1825,SEEK_SET);

if(ret == (off_t)-1)

/*error*/

--设置文件位置fd到文件末尾:

off_t ret;

ret = lseek(fd, 0, SEEK_END);

if(ret == (off_t)-1)

/*error*/

--用SEEK_CUR和0值来确定文件当前位置:(由于lseek()返回更新过的文件位置)

int pos;

pos = lseek(fd,0,SEEK_CUR)

if(pos == (off_t)-1)

/*error*/

else

/*'pos' is the current position(位置) of fd*/

Linux操作系统基础教程

Linux操作系统基础教程 清华大学信息学院计算机系 目录 前言 (2) 第一讲 Linux基础 (2) 一.什么是Linux? (2) 二.安装Linux的好处? (3) 三.如何得到Linux? (3) 四.如何得到Linux的最新消息? (3) 五.Linux操作系统上有什么应用? (4) 六.在那里可以找到讨论区? (5) 七.安装过程 (5) 第二讲 Linux基础进阶 (5) 一.Linux的文件系统结构 (6) 二. 文件类型 (7) 三.Linux基本操作命令 (8) 四.基本的系统管理命令 (14) 五.关於 Process 处理的指令 (16) 六. 关於字串处理的指令 (17) 七. 网路上查询状况的指令 (17) 八. 网路指令 (18) 九. 关於通讯用的指令 (21) 十. 编译器( Compiler ) (22) 十一. 有关列印的指令 (22) 第三讲 Linux下的网络服务,配置问题和常用工具 (24) 一.Linux下的网络服务 (24) 二.几种重要的配置文件 (26) 三.Linux下常用的工具软件 (28) 尾语 (31)

前言 Linux是在1991年发展起来的与UNIX兼容的操作系统,可以免费使用,它的源代码可以自由传播且可任人修改、充实、发展,开发者的初衷是要共同创造一个完美、理想并可以免费使用的操作系统。 我们并不能使同学们通过这次系列讲座成为一个UNIX类操作系统的高手,这次系列讲座的目的就是在同学们中间普及Linux基础知识,为今后我们更加接近的了解Linux做一个好的开端。 第一讲 Linux基础 在这一讲中,我们主要是了解一下Linux的概况,以及对Linux有一个初步的感性认识。 一.什么是Linux? Linux是一个以Intel系列CPU(CYRIX,AMD的CPU也可以)为硬件平台,完全免费的UNIX兼容系统,完全适用于个人的PC。它本身就是一个完整的32位的多用户多任务操作系统,因此不需要先安装DOS或其他的操作系统(MS Windows, OS2, MINIX..)就可以进行直接的安装。Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux Torvalds (Torvalds@kruuna.helsinki.fi)写了Linux核心程序的0.02版开始的,但其后的发展却几乎都是由互联网上的Linux社团(Linux Community)互通交流而完成的。Linux不属于任何一家公司或个人,任何人都可以免费取得甚至修改它的源代码(source code)。Linux上的大部分软件都是由GNU倡导发展起来的,所以软件通常都会在附着GNU Public License(GPL)的情况下被自由传播。GPL是一种可以使你免费获得自由软件的许可证,因此Linux使用者的使用活动基本不受限制(只要你不将它用于商业目的),而不必像使用微软产品是那样,

习题答案-Linux操作系统原理实践教程-崔继-清华大学出版社

第1章 1、在VMwane中安装CentOS 7的基本步骤有哪些? (1)新建虚拟机 (2)虚拟机设置 (3)启动虚拟机 (4)设置安装信息,包括软件选择,安装位置,分区等 (5)完成最后安装 2、安装Linux时可以设置哪些分区?有哪些分区是必须的? 能够设置的分区可以根据安装系统时提示,主要包括:/,/boot,swap,/home,/opt 等等;其中/(根)分区是必须的。 第2章 1、针对Linux 系统启动运行,有哪些运行目标?每个运行目标的含义是什么? CentOS 从7.0 开始使用systemd 代替init 作为系统启动和服务器守护进程的管理器,负责在系统启动或运行时,激活系统资源,管理服务器进程。systemd 用目标(target)替代了运行级别的概念,提供了更大的灵活性,比如可以继承一个已有的目标,并添加其他服务来创建自己的目标。CentOS 7.0 之前的运行级别和systemd 目标之间的对应关系如下表所示。 2、Linux 有几种关机方法,每种关机操作有何异同? 关闭系统的命令有: shutdown(最安全的方式),halt,init,telinit,poweroff,reboot,具体含义可以参考

帮助手册页。 第3章 more、less、cat、wc 命令有什么区别? 这几个命令可用于对文本文件的处理显示,主要区别在:more命令以分页(一次一屏)显示文本信息;less类似于more,但增加了回滚功能;cat本意是连接文件并在标准输出上输出,也就是将文件一次全部输出;wc用于统计输出文件中的行数、单词数、字节数等。 第4章 (1)发出命令显示行号。 底端命令方式下 :set nu (2)保存到文件AboutLinux,并不退出。 底端命令方式下 :w AboutLinux (3)删除一句“It is this kernel that forms the base around which a Linux operating system is developed.”。 在命令方式下,先把光标移到It处,再按d$。(从当前光标处到行末的所有字符删除)(4)查找单词“Finland”。 命令方式下输入/Finland,回车后会在第一个Finland处停下来。 (5)把第一段的“Finland”单词后的内容换行,使其变成三段内容。 插入方式下,将光标移到Finland后,按回车键即可。(vi的换行标志是回车符) (6)将第二段的内容复制到文档的最后。 命令方式下:先用yy命令,然后移到文档最后,再按p键。 (7)删除第三段的内容。 命令方式下,光标移到第三段,用dd命令。(注,这里的段实际上是第3行。) (8)恢复被删除的一段内容。 命令方式下,用u命令。 (9)查找所有的“Minix”单词,并全部改为“MINIX”。 底端命令方式下,:1,$s/Minix/MINIX/g (10)不保存修改,退出vi。 底端命令方式下,:q! (11)使用vi再次打开文件AboutLinux,在第二段后插入“He began his work in 1991 when he released version 0.02 and worked steadily until 1994 when version 1.0 of the Linux Kernel was released.”。 shell命令提示符下输入:vi AboutLinux(打开保存的文件)

实验2:Linux操作系统基本操作

实验报告2 课程名称:Linux程序设计实验名称:Linux操作系统基本操作 学生姓名:班级:学号: 指导老师:钱振江成绩: 一、实验目的 1.通过对emacs、vi、vim、gedit文本编辑器的使用,掌握在Linux环境下文本文件的编辑方法; 2.通过对常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linux操作系统中文件命令的用法。 二、实验任务与要求 1.emacs的使用,要求能新建、编辑、保存一个文本文件 2.vi或vim的使用,要求能新建、编辑、保存一个文本文件 3.gedit的使用,要求能新建、编辑、保存一个文本文件 4.掌握mkdir、cd命令的操作,要求能建立目录、进入与退出目录 5.掌握cp、ls、mv、chmod、rm等命令的操作,要求能拷贝文件、新建文件、查看文件、文件重命名、删除文件等操作。 三、实验工具与准备 计算机PC机,Linux Ubuntu操作系统 预备知识 文本编辑器emacs、gedit是一款图形化的编辑器,具体的使用方法按照菜单操作。文本编辑器vi有三种状态:命令状态、最后行状态、编辑状态。 mv:用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。 rm:删除文件或目录,参数-r指示rm将参数中列出的全部目录和子目录均递归删除,在使用rm命令要小心,因为一旦被删除,它是不能恢复的。 cp:将一个文件拷贝至另一文件,或将数个文件拷贝至另一目录。 chmod:用于改变文件或目录的访问权限,它的使用格式为: chmod [who] [+|-|=] [mode] 文件名 who可取u、g、o、a,或它们的组合 mode可取r、w、x等参数。 ls:用于显示目录内容,它的使用权限是所有用户。 mkdir:建立子目录,它的使用权限是所有用户。 四、实验步骤与操作指导 1.学习vi或者vim的使用,要求能新建、编辑、保存一个文本文件。 (1)点击”应用程序”→ “附件”→“终端”,打开终端,在终端输入命令: [root@localhost root]#vi kk.c 按i键,进入插入状态。 (2)输入以下C程序 #include

《Linux系统应用与开发教程》所有课后习题和答案

《Linux系统应用与开发教程》所有课后习题和答案 第1章Linux概述 (1) 第2章shell及常用命令 (4) 第3章vi编辑器的使用 (7) 第4章X Window系统的使用 (9) 第5章Linux系统的常用软件 (11) 第6章硬件管理 (11) 第7章网络基本配置 (12) 第8章常用网络服务的配置和使用 (15) 第9章系统管理与监控 (19) 第10章Linux系统的安全管理 (21) 第11章shell程序设计 (24) 第12章gcc的使用与开发 (26) 第13章gtk+图形界面程序设计 (27) 第14章Qt图形界面程序设计 (28) 第15章集成开发环境KDevelop的使用 (31) 第1章 Linux概述 1.什么是Linux? Linux是一套免费使用和自由传播的类UNIX操作系统,源代码开放,能运行于各类硬件平台,包括Intel x86系列和RISC处理器。这个系统是由世界各地成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。 2.Linux有哪些特性? (1)开放性 (2)多用户 (3)多任务 (4)良好的用户界面 (5)设备独立性 (6)丰富的网络功能

(7)可靠的系统安全 (8)良好的可移植性 3.Linux与Windows操作系统的主要区别是什么? (1)从发展的背景看,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows等,都是自成体系,无对应的相依托的操作系统 (2)从使用费用上看,Linux是一种开放、免费的操作系统,Windows是封闭的系统,需要有偿使用。 (3)Linux上丰富的应用软件也是自由的,而在Windows下,几乎所有的软件都有独立的版权,需要购买使用,即使某些软件可以免费使用,也一般不提供其源代码,更不用说由用户修改扩充其功能了。 (4)Windows对硬件配置要求高,而Linux在低端PC系统上仍然可以流畅运行4.Linux与Unix的共同点与不同点是什么? 共同点:由于Linux是从Unix发展来到,它遵循Unix开放标准,基本支持同样的软件、程序设计环境和网络特性,可以说Linux是UNIX的PC版本,Linux在PC机上提供了相当于UNIX工作站的性能。 与商用Unix的不同点有:1)Linux是免费软件,用户可以从网上下载,而商用的UNIX除了软件本身的价格外,用户还需支付文档、售后服务费用;2)Linux拥有GNU软件支持,Linux能够运行GNU计划的大量免费软件,这些软件包括应用程序开发、文字处理、游戏等方面的内容;3)Linux的开发是开放的,任何志愿者都可以对开发过程做出贡献;而商用UNIX则是由专门的软件公司进行开发的。 与自由Unix的不同点: 1)在组织方式上,FreeBSD由它的核心团队(core team)的领导,他们负责原始程序的开发与维护。有core team的优点是原始程序会有一致性,会有组织的被更新,但是整个系统的活力操纵在core team手中,缺乏活力。Linux没有核心团队,在Linus的主导下来自世界各地的爱好者都可以发布自己的patch,缺点是源代码杂乱无章且可能会相互冲突。 2)在发展方向上,FreeBSD的核心团队将主要精力投入在UNIX自身的风格和特点上。Lin ux通常会首先加入商品化系统上的各种东西,比如新的硬件驱动、samba等。因此,从易用和可用上讲,Linux更容易上手和使用。 3)在系统核心功能上二者区别不大,但在Linux系统上,几乎可是找到任何需要的功能 4)在系统的性能上,据专家分析,FreeBSD在网络性能、软件移植性和系统规范化上略胜一畴,而在硬件支持、磁盘IO操作等方面Linux略强一些。 5.什么是GNU软件,什么是GPL和LGPL? GUN项目主要由自由软件基金资助的一个项目,目标是开发一个自由的、UNIX类型的操作系统,称为GNU系统。GNU是―GNU’s Not UNIX‖的首字母的递归缩写,目前使用Linux内

Linux操作系统实验教程

Linux操作系统实验教程 第1章Linux系统概述 一、Linux系统结构 从操作系统的角度来分析Linux,它的体系结构总体上属于层次结构如下图所示: 从内到外包括三层:最内层是系统核心,中间是Shell、编译编辑实用程序、库函数等,最外层是用户程序,包括许多应用软件。 从操作系统的功能角度来看,它的核心有五大部分组成:进程管理、存储管理、文件管理、设备管理、网络管理。各子系统实现其主要功能,同时相互之间是合作、依赖的关系。进程会管理是操作系统最核心的内容,它控制了整个系统的进程调度和进程之间的通信,是整个系统合理高效运行的关键; 存储管理为其他子系统提供内存管理支持,同时其他子系统又为内存管理提供了实现支持,例如要通过文件管理和设备管理实现虚拟存储器和内外存的统一管理。 二、配置一个双引导系统 如果计算机中已经安装了其他操作系统,并想创建一个引导系统以便兼用Red Hat Linux和另外的操作系统,需要使用双引导。机器启动时,可以选择其中之一,但不能同时使用两者。每个操作系统都从自己的硬盘驱动器或硬盘分区中引导,并使用自己的硬盘驱动器或硬盘分区。 如果计算机上还没有安装任何操作系统,可以使用专门的分区及格式化软件给Windows创建指定大小的分区,Windows的文件系统为FAT,再为Linux系统创建所需要大小的分区(4G或更大),另外再给Linux留100MB 左右的交换分区,Linux的文件系统为ext2。然后就可以安装系统了。应首先安装Windows,然后再安装Red Hat Linux。如果只进行了分区而没有格式化各分区,在安装时可以使用Windows自带的格式化程序和Linux自带的格式化程序进行各自分区的格式化。 当Windows已经被安装,而且已为Linux准备了足够的磁盘空间,就可以安装Linux了。Red Hat Linux安装程序通常会检测到Windows并自动配置引导程序来引导Windows或Red Hat Linux。

中文版Linux 桌面操作系统初级教程

《中文版Linux 桌面操作系统初级教程》郭守华宋雪娇编著 Linux操作系统支持多种安装方式。本章将讨论从硬盘安装对红旗Linux、共创Linux等各种版本的Linux都适用的通用方法。从硬盘安装Linux操作系统,首先要准备安装包,Linux操作系统的安 装包通常是一个或多个ISO镜像文件(一般通过网络下载就可以得到);其次,要通过某种手段启动镜像 文件中的系统安装程序;接下来,按照安装程序的提示信息进行安装就可以了。安装过程中,需要指 定Linux操作系统的安装位置,这主要涉及硬盘分区的一些知识。 综合来看,学习Linux操作系统的安装,关键要学会两点:第一、如何Linux操作系统准备硬盘 空间?第二、如何启动ISO镜像文件中的安装程序。 硬盘分区 通常,在使用硬盘时,都要进行分区。如果把未分区的硬盘比做一张大白纸,那么分区后的硬 盘就相当于这张大白纸被画上了几个大方框。一块硬盘被分成多个分区之后,各分区之间是相对独立 的,每个分区都可以有自己的文件格式,例如FAT16、FAT32、NTFS等等。 Linux操作系统需要的硬盘分区 要安装一个操作系统,一般来讲都要为它准备专门的分区。专门,意味着不能与其他操作系统 合用一个分区,也意味着不要与用户自己的数据文件合用一个分区,前者是因为不同的操作系统可能 需要不同格式的磁盘分区,后者则更多地出于用户数据安全和系统维护方便的考虑。从最低配置角度 讲,Linux 操作系统需要一个EXT2或EXT3格式的硬盘分区作为根分区,大小在2~5G就可以。另外还 需要一个SWAP 格式的交换分区,大小与内存有关:如果内存在256M以下,交换分区的大小应该是内存 的两倍;如果内存在256M以上,交换分区的大小等于内存大小即可。 Windows硬盘分区管理工具 管理硬盘分区的工具有很多,在网上也可以找到详细的使用指导。为了方便读者,本书整理收 录了Windows 环境下运行的PQMagic4.0 的使用方法,其它版本的PQMagic的使用方法也基本相同。

Linux 操作系统 Ubuntu 图 安装 教程 hzd

。 。 Linux 操作系统 Ubuntu 9.10 图解安装教程 QQ :183284035 2011-11-1 Ubuntu 是一个神奇的 Linux 操作系统,四年多前我们第一次试用了 Ubuntu ,之后便被深深的吸引, 特别是从 8.04Lts 开始,Ubuntu 便成了沙浪网众人的主要工作环境。特别是沙浪网美女小梅,在午睡梦呓 中竟然喃喃自语说出“非 Ubuntu 不嫁”这样的豪言壮语,令人震撼! Ubuntu 是一个流行的 Linux 操作系统,基于 Debian 发行版和 GNOME 桌面环境,和其他 Linux 发 行版相比,Ubuntu 非常易用,和 Windows 相容性很好,非常适合 Windows 用户的迁移,预装了大量 常用软件,中文版的功能也较全,支持拼音输入法,预装了 Firefox 、Open Office 、多媒体播放、图像处理等 大多数常用软件,一般会自动安装网卡、音效卡等设备的驱动,对于不打游戏不用网银的用户来说,基本 上能用的功能都有了,在 Windows 操作系统下不用分区即可安装使用,就如同安装一个应用软件那么容 易,整个 Ubuntu 操作系统在 Windows 下就如同一个大文件一样,很容易卸载掉。 Ubuntu 经过近五年的发展,从 Ubuntu 4.10 到当前的 Ubuntu 9.10,进步之大是有目共睹的事实。 当然,Ubuntu 的进步是建立在所有自由软件进步的基础之上的。 下面,通过一些简单的介绍,让我们来了解一下 Ubuntu : 官方解答 什么是 Ubuntu? Ubuntu 是一个由全球化的专业开发团队建造的操作系统。它包含了所有您需要的应用程序:浏览器、 Office 套件、多媒体程序、即时消息等。 Ubuntu 是一个 Windows 和 Office 的开源替代品。 1. 关于 Ubuntu 一词 Ubuntu 是一个南非的民族观念,着眼于人们之间的忠诚和联系。该词来自于祖鲁语和科萨语。Ubuntu (发音"oo-BOON-too"--“乌班图”)被视为非洲人的传统理念,也是建立新南非共和国的基本原则 之一,与非洲复兴的理想密切相关。Ubuntu 精神的大意是“人道待人”(对他人仁慈)另一种翻译可 以是:“天下共享的信念,连接起每个人” “具有 ubuntu 精神的人心胸开阔,乐于助人,见贤思 齐而不忌妒贤能,因为他/她拥有适度的自信,而这源自如下认识:自己乃是属于一个更大的整体, 当他人受到伤害或死去时,当他人受到折磨或压迫时,这个整体就会消失。”--大主教 Desmond Tutu 。 作为一个基于 GNU/Linux 的平台,Ubuntu 操作系统将 ubuntu 精神带到了软件世界。

操作系统原理-Linux下的内存分配与回收的管理

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室2014年11月19日 学院计算机科学与 教育软件学院 年级/专 业/班 姓 名 学号 实验课 程名称 操作系统实验成绩 实验项目名称Linux下的内存分配与回收的管理 指导 老师 张艳玲 一、实验目的 在Linux环境下利用下列系统调用malloc(),free()编写一段程序实现内存分配与回收的管理。 二、实验器材 1、计算机一台。 2、Linux 三、实验内容 1.返回已分配给变量的内存地址; 2.返回释放后的内存地址; 3.释放已分配的内存空间后,返回释放内存后未使用内存的大小。 四、实验步骤、记录和结果 源代码有错,不能正常运行,使用纯C语言,修改正如下。 黄色底色的为新增代码新增注释为绿色底色 #include /* For _MAX_PATH definition */ #include //#include //#include #include //void main() int main() { // int *string; char *string; // string =(int*) malloc(10 ); string = (char*) malloc(sizeof(char)*10); if( string == NULL )

printf( "Insufficient memory available\n" ); else { printf( "Memory space allocated for path name\n" ); /*printf ("string=%d\n",string);*/ // cout<<"string="< #include int main(){ char *string = (char*) malloc(sizeof(char)*10);

实验一Linux操作系统基础

实验一 1 实验名称:Linux操作系统基础 2 实验目标 2.1 掌握安装Linux操作系统的方法。 2.2 掌握Linux操作系统的基本配置。 2.3 了解GNOME桌面环境。 2.4灵活掌握基本shell命令的使用。 3 实验准备 3.1 下载VMware Workstation虚拟机软件(版本不限)。 3.2 准备Linux操作系统的安装源(核版本和发行版本均不限)。 注:实验准备、实验容4.1和4.2作为回家作业布置,同学们利用课余时间完成。 4 实验要求、步骤及结果 4.1 安装虚拟机软件。 【操作要求】安装VMware Workstation虚拟机软件,版本不限,并填写以下容。 4.1.1安装VMware Workstation虚拟机软件的环境(操作系统)

4.1.2VMware Workstation虚拟机版本号

4.2 安装Linux操作系统。 【操作要求】在VMware虚拟机下安装Linux操作系统,版本不限,并填写以下容。 4.2.1 Linux发行版本: 4.2.2 Linux核版本: 4.2.3 Linux操作系统的主要配置参数 4.3 了解Linux操作系统的桌 面环境之一GNOME。 【操作要求1】打开图形化用 户界面、查看桌面图标,查看 主菜单,查看个人用户主目录 等使用环境。

【操作要求2】启动字符终端2,了解命令提示行含义。 Alt+F2+Ctrl [用户名主机名目录名] 提示符 【操作要求3】注销字符终端2 【操作要求4】关闭图形化用户界面,关闭Linux操作系统。 4.4 掌握基本shell命令的使用。 注:以下需要截取shell命令与结果,没有结果截到下一命令提示行。 【操作要求1】用超级用户登陆;将主机名改为具有个人学号后3位特征的名称,退出虚拟终端后重新登录;查看当前目录的绝对路径。 【操作步骤-登陆】 【操作步骤-修改主机名】

-Linux操作系统基础教学大纲

Linux操作系统基础 Foundation of Linux Operation System 适用范围:2013本科人才培养方案 课程编号: 学分:2 学时:32(其中:讲课学时:20 实验学时:12) 先修课程:计算机文化概论 适用专业:网络工程 建议教材:《Linux实用教程》陈博等人民邮电出版社2008年10月 开课单位:软件学院 一、课程的性质与任务 课程性质:本课程是网络工程专业网络安全与攻防方向的一门专业方向任选课,Linux及应用是计算机科学专业的一门专业课程。 课程任务:本课程的目的和任务是使学生全面地了解和掌握Linux系统的基本概念、原理及应用技术、以及适应社会对Linux操作与管理人员的需求。通过本门课程的学习,能够为以后从事软件编程、分布式处理及系统服务部署等不同应用领域的研究打下深厚的理论基础。 二、课程的基本内容及要求 (一)认识Linux系统 1. 课程教学内容: (1)Linux系统简介 (2)Linux系统的特点和组成 (3)Linux版本介绍 (4)Fedora Core系统概述 2. 课程重点、难点 重点:了解Linux操作系统的发展历程,改系统的特点和组成。 难点:Linux操作系统与Window操作系统的异同。 3. 课程教学要求: (1)了解计算机计算机操作系统的发展过程; (2)理解Linux操作系统与UNIX系统的区别,理解GUN计划的内容; (3)掌握Linux各个系统的版本及其优劣等。

(二)Fedora 系统的安装和删除 1. 课程教学内容: (1)准备安装Linux操作系统 (2)分区的概念和分区的类型。 (3)硬盘的类型。 (4)安装Linux的步骤及安装后的初始化工作。 (5)删除MBR中GRUB引导程序。 (6)删除Linux分区。 2. 课程重点、难点 重点:如何对硬盘分区,如何命名分区,分区的格式化等。 难点:如何理解分区的编号及文件系统的建立等。 3. 课程教学要求: (1)本章的学习目的是使学生能够自己安装一个操作系统,合理分区,并了解Linux下分区的概念。了解如何建立交换分区。 (2)理解分区文件的命名描述; (3)掌握安装Linux的步骤及安装后的初始化工作,掌握如何删除MBR中的GRUB分区程序。 (三)Linux图形化界面 1. 课程教学内容: (1)登录、注销和关闭系统 (2)GNOME基本使用 (3)系统设置 (4)Fedora系统的应用软件使用 2. 课程重点、难点: 重点:掌握如何正常登录、注销和关闭系统的几个命令。 难点:了解在如何在GNOME图形界面中如何复制、黏贴、删除文件等。 3. 课程教学要求: (1)了解GNOME的初步使用,系统的各种基本设置; (2)理解硬盘分析器、系统日志等内容。 (3)掌握在GNOME的操作使用。 (四)Linux字符界面操作 1. 课程教学内容:

《操作系统原理》考核方式

“面向三类需求的三位一体”的考评方式与标准 一.课程简介与特点 操作系统课程重点讲述操作系统的基本原理和实现技术,是理解计算机系统工作原理、用户界面接口技术、应用系统设计开发方法等基本知识结构的重要途径,其内容涉及理论、算法、技术、实现和应用等方面。 二.课程在培养方案中的目标与任务 通过本课程的学习,使学生认识到操作系统在计算机软硬件资源管理中的地位和作用,掌握操作系统的基本概念、原理和基本方法,掌握操作系统的开发模式、开发方法和操作系统的分析、设计能力,了解操作系统的发展方向,培养学生观察问题、分析问题、解决问题和实际动手能力。通过本课程的学习,从深层次了解操作系统的组成、结构和功能,增强学生大型系统软件的开发能力,并注重专业素养的不断提高,为学生以后参与系统软件分析和开发奠定基础。 三.课程考评方式与标准 1.考评形式 针对操作系统原理课程自身特点与培养目标,制定了“面向三类需求的三位一体”操作系统课程考评形式:面向社会需求、学术需求以及学生个人需求,建立知识、能力和素质一体化考试模式改革。 2.考核内容 三类需求包括社会需求、学术需求和学生需求。社会需求是社会及产业界对学生知识运用、工程实践、团队协作等实际应用能力的需求,强调学生知识能力技术并重;学术需求是高校及高校学者对学生缜密学术思维、学习态度、科学研究能力和知识创新能力的需求,强调学生知识能力系统化;学生需求是学生个体根据自身的兴趣专长和优势潜能,在自身综合发展上对学习知识、提高综合能力和素质等方面的个人需求。 因此,对学生知识、能力与素质的一体化考核即涵盖了以上三类需求中的具体要求。 3.考核内容比重与评分标准 面向三类需求的三位一体考试改革即是面向社会需求、学术需求和学生需求的三类综合需求,采用60%闭卷考试成绩+20%实践环节成绩+10%总结报告学术交流成绩+10%平时考核成绩的综合评定,建立对学生知识、能力和素质的一体化综

Linux操作系统原理与运用(复习题).doc

《Linux操作系统原理与运用》一、填空题(每题2分) 1、(PCB)操作系统控制进程的唯一数据结构。 2、Linux文件系统中每个文件用(i节点)来标识。 3、安装Linux系统对硬盘分区时,必须有两种分区类型:(文件系统分区)和(交换分区)。 4、编写的Shell程序运行前必须赋予该脚本文件(执行)权限。 5、Linux内核引导时z从文件(/ect/fstab)中读取要加载的文件系统。 6、在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 (_wtest.txt) o 7、检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是fsck-a/dev/had5o & shell不仅是用户命令的解释器,它同时也是一种功能强大的编程语言,bash_> Linux 的缺省shelL 9、一个批处理型作业,从进入系统并驻留在外存的后备队列上开始,直到作业运行完毕,可能要经历以下三级调度(低级)、(中级)、(高级)。 10、设有n个进程共享一个临界区,若最多允许m个进程(mvn )同时进入临界区,则所采用的信号量的初值应为仲),信号量值的变化范围为()。 11、一段时间内仅允许一个进程访问的资源称为(临界资源)。 12、分页系统的页长为1KB ,虚拟地址0x3C8F对应的页号为(FH ),页内地址为 (8FH )o 13、在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为(文件系统)。 二选择题 1、没有题目。(A ) A、只有一个 B、可以有多个 C、不能被挂起 D、必须在执行完后才能被撤下2、已经获得除(C )以外的所有运行所需资源的进程处于就绪状态。 A、储存器 B、打印机 C、CPU D、磁盘空间

Linux操作系统基础教程

Linux系统基础课程教案 第一章绪论 一、 U nix家族中的一员 ①UNIX,1971年由AT&T发布,73年重写, 70年代末,AT&T成立了Unix系统实验室(Unix System Lab,USL),宣布对Unix产品拥有所有权,1983年发布了 SYSTEM V。在UNIX7之前,UNIX是免费或收取少量费 用开放源码的。UNIX的研发诞生了C语言。 (AT&T,美国电报电话公司。1974受到美国反托拉斯司起 诉,被控利用垄断美国本土电话服务的优势,排挤长途电话 竞争者。案件在1982年得到和解。美国电报电话公司同意 将本土电话业务拆分为8个小公司。根据美国反垄断法规定 AT&T不能进入计算机市场领域,所以AT&T无法将UNIX 作为商品出售。只能自己使用和发放到大学的科研机构中供 研究使用。) ②BSD(Berkeley Software Distribution) 伯克利的加利佛尼亚大学计算机科学研究组以UNIX 7.0为 基础开发了UNIX的BSD版本。从1977年起,它免费发布 了数千份1BSD和2BSD(PDP—11使用),以及4BSD(V AX 使用)。到90年代开发到4.4版,以及FreeBSD。 BSD Unix

中最先实现了TCP/IP,是最具影响的UNIX。 但90年代BSD遭遇到AT&T的指控,后来BSD与93年已经卖给Novell公司的Unix系统实验室(USL)达成和解,但BSD Unix系统中必须去除原来来自AT&T的不到10%源码。因此直到1995年1月他们才发布了完全4.4BSD Lite 的系统的FreeBSD 2.0,为此耽误了时机,成就了Linux等竞争对手(伯克利计算机系统研究组(CSRG)在发布了4.4BSD-lite2之后就解散了,小组的科研人员有些进入了Unix商业公司,有些继续进行其他计算机领域的研究。FreeBSD是CSRG在1992年终止开发之前发行的最后一个BSD版本——4.4BSD的一个著名分支。BSD的著名后继有OpenBSD、NetBSD、FreeBSD和BSDI等)。 ③MINIX 1987年荷兰阿姆斯特丹Vrije(自由?)大学教授Andrew Tanenbaum以UNIX7为蓝本开发出一个运行于IntelX86平台上的简化类UNIX系统MINIX(mini-UNIX的意思)来用于教学。MINIX开放源码,因完全独立开发故不受AT&T 许可协议的约束。最新的版本是MINIX 2.0.4 [Nov-9-2003],可以去官方网站免费下载。 ④Linux 1991年,芬兰学生Linus Torvalds开始使用MINIX时,对MINIX提供的功能不满意。于是他自己写了一个类UNIX 操作系统(尽管还是用MINIX编译的)并放到网上让人们

Linux操作系统基础

Linux基础 本章提要: 本章介绍如何使用Linux、Linux的用户界面、Linux基础命令。此章属于入门知识部分,读者熟练掌握本章各知识点,对后章能熟练操作Linux系统至关重要。 2.1 使用Linux 2.1.1 开机 用户接通Linux主机电源以后,首先会进入一个引导界面,如图2-1所示。下面以RedHat 9的grub为例。 图2-1 在上图的框内,有一个可以上下移动的光标,可以选择你想进入的操作系统或者模式,然后按Enter键进入系统。 2.1.2 注册 用户接通Linux主机电源,主机显示启动有关信息,稍待片刻显示RUTU界面,如图2-2所示,表示处于注册状态。 图2-2 此处显示了所用Linux的发布版名称,代号以及核心版本、机器类型等信息。不同的发布版都有类似的界面。

2.1.3 控制台操作 出现系统提示符后,表示系统处于待命状态,此时用户可以输入Linux能够接受的命令,Linux下命令的格式一般是: <命令> -<可选项1> -<可选项2>…<可选项n> <参数1> <参数2>…<参数n> 其中,可选项决定命令执行的形式,一条Linux命令能附带的可选项多达数十种,它们之间的组合数目就更加庞大了。而参数则是命令执行所需提供的一些相关信息。有一些命令可以完全不用参数,而有一些则可能需要许多参数。注意:Linux的命令、可选项、参数均区分大小写。 在输入命令的过程中如果发现输入出错,可按键盘上的退格键往回删除刚输入的出错字符,再重新输入。如果出错的字符位于离光标当前位置较远的地方,也可以用左光标键将光标移至出错字符处右端,再按退格键删除,若是漏打字符则可在该处重打插入。按上、下光标键可以使用以前打过的命令,当经常需要运行某条形式相似的命令时,此功能特别有用,甚至还可以返回以前注册时使用过的命令。 输入的命令以回车结束,系统将分析用户输入的命令,如果该命令不正确,系统将给出错信息,如果命令正确,系统将执行该命令所对应的功能,如图2-3所示。 图2-3 命令运行过程中,会在用户所在终端的屏幕(标准输出)输出该命令运行的一些信息和结果。若输出的内容较多,一个屏幕容纳不下,屏幕将会把原有内容上翻,新的内容继续在后面显示,如果屏幕翻滚速度太快,用户为了看清输出的结果,可以用+s组合键暂停输出,然后,按+q又可重新恢复输出。 命令执行完毕后,将返回系统提示符下。此时,用户又可以继续输入下一条命令,如此往复,直到用户退出为止。若一条命令运行了很长时间都没有停止,用户可以用组合键+c中断该命令的执行,重新返回提示符。 2.1.4 进入图形界面 (1)用超级用户登录Linux,再运行startx,如图2-4所示。 图2-4

《Linux操作系统及应用项目教程》习题

1.8 练习题 一、填空题 1.GUN的含义是。 2.Linux一般有3个主要部分:、、。 3.目前被称为纯种的Unix指的就是以及这两套操作系统。 4.Linux是基于的软件模式进行发布的,它是GNU项目制定的通用公共许可证,英文是。 5.史托曼成立了自由软件基金会,它的英文是。 6.POSIX是的缩写,重点在规范核心与应用程序之间的接口,这是由美国电气与电子工程师学会(IEEE)所发布的一项标准。 7.当前的Linux常见的应用可分为与两个方面。 8.Linux的版本分为和两种。 9.安装Linux最少需要两个分区,分别是。 10.Linux默认的系统管理员账号是。 11.X-Window System由三部分构成:、、。 12.RHEL 5提供5种基本的安装方式:本地光盘安装、本地硬盘安装、NFS安装、FTP 安装和HTTP安装。 13.如果想在安装好Red Hat Enterprise Linux 5之后重新设置根用户口令,就需要在命令行控制台下输入“”指令了。 二、选择题 1.Linux最早是由计算机爱好者()开发的。 A.Richard Petersen B.Linus Torvalds C.Rob Pick D.Linux Sarwar 2.下列()是自由软件。 A.Windows XP B.UNIX C.Linux D.Windows 2008 3.下列()不是Linux的特点。 A.多任务B.单用户C.设备独立性D.开放性4.Linux的内核版本2.3.20是()的版本。 A.不稳定B.稳定的C.第三次修订 D.第二次修订5.Linux安装过程中的硬盘分区工具是()。 A.PQmagic B.FDISK C.FIPS D.Disk Druid 6.Linux的根分区系统类型是()。 A.FATl6 B.FAT32 C.ext3 D.NTFS 三、简答题 1.简述Linux的体系结构。 2.Linux有哪些安装方式? 3. 安装Red Hat Linux系统要做哪些准备工作? 4. 安装Red Hat Linux系统的基本磁盘分区有哪些?

Linux操作系统原理与应用

操作系统概述 在计算机应用的过程中,人们接触最频繁的是操作系统,例如磁盘操作系统DOS、易于使用的图形界面操作系统Windows、开放源代码的操作系统Linux等。但是,操作系统往往是比较复杂的系统软件,相对于使用而言,要掌握它的运行机制就不是那么容易。 1.1 认识操作系统 可以从不同的角度来认识操作系统。从使用者的角度看,操作系统使得计算机易于使用。从程序员的角度看,操作系统把软件开发人员从与硬件打交道的繁琐事务中解放出来。从设计者的角度看,有了操作系统,就可以方便地对计算机系统中的各种软、硬件资源进行有效的管理。 1.1.1 从使用者角度 人们对操作系统的认识一般是从使用开始的。打开计算机,呈现在眼前的首先是操作系统。如果用户打开的是操作系统字符界面,就可以通过命令行完成需要的操作。例如,要在Linux下复制一个文件,则输入: cp /floppy/TEST mydir/test 上述命令可以把/floppy目录下的TEST文件复制到mydir目录下,并更名为test。 为什么可以这么方便地复制文件?操作系统为此做了什么工作?首先,文件这个概

念是从操作系统中衍生出来的。如果没有文件这个实体,就必须指明数据存放的具体物理位置,即位于哪个柱面、哪个磁道、哪个扇区。其次,数据转移过程是复杂的I/O操作,一般用户无法关注这些具体的细节。最后,这个命令的执行还涉及其他复杂的操作,但是,因为有了操作系统,用户只需要知道文件名,其他繁琐的事务完全由操作系统去处理。 如果用户在图形界面下操作,上述处理就更加容易。实际上,图形界面的本质也是执行各种命令,例如,如果复制一个文件,那么就要调用cp命令,而具体的复制操作最终还是由操作系统去完成。 因此,不管是敲击键盘或者单击鼠标,这些简单的操作在指挥着计算机完成复杂的处理过程。正是操作系统把繁琐留给自己,把简单留给用户。 1.1.2 从程序开发者角度 从程序开发者的角度看,不必关心如何在内存存放变量、数据,如何从外存存取数据,如何把数据在输出设备上显示出来,等等。例如,cp命令的C语言实现片段如下: inf=open("/floppy/TEST",O_RDONLY,0); out=open("/mydir/test",O_WRONLY,0600); do{ l=read(inf,buf,4096); write(outf,buf,l); } while(l); close(outf); close(inf); 在这段程序中,用到四个函数open(),close(),write()和read(),它们都是C语言函数库中的函数。进一步研究可知,这些函数都要涉及I/O操作,因此,它们的实现必须调用操作系统所提供的接口,也就是说,打开文件、关闭文件、读写文件的真正操作是由操作系统完成的。这些操作非常繁琐,对于不同的操作系统其具体实现也可能不同,程序开发者不必关心这些具体操作。 1.1.3 从操作系统在整个计算机系统中所处位置 如果把操作系统放在整个计算机系统中考虑,则如图1.1所示。

操作系统原理与Linux系统试验(庞丽萍 郑然) 复习笔记

操作系统原理与Linux系统实验考试范围 第一章 操作系统的发展也历经了初级阶段、操作系统的形成阶段和操作系统的进一步发展这三个阶段。 通道:一种专用的处理部件,它能控制一台或多台外设的工作,负责外设与主存之间的信息传输。 中断:指当主机与接到某种信号(如I/0设备完成信号)时,马上停止原来的工作,转去处理这一事件,当事件处理完毕,主机又回到原来的工作点继续工作。 操作系统的形成标志是:采用多道程序设计技术和分时技术。 多道程序设计技术:主存中同时存放几道相互独立的程序,它们在操作系统的控制之下,相互穿插地运行。 分时技术:把CPU时间划分成很短的时间片,轮流地分配给各个联机作业使用。 什么是操作系统:操作系统是一个大型的程序系统,它负责计算机的软、硬件资源的分配和管理;控制和协调并发活动;提供用户界面,使用户获得良好的工作环境。 操作系统的特性:1、并发(指能处理多个同时性活动的能力);2、共享(多个计算任务对系统资源的共同享用);3、不确定性 并发和共享是一对孪生兄弟,程序的并发执行,必然要求对系统资源的共享,而只有提供系统资源共享的可能才能使程序真正的并发执行。 操作系统的资源管理:处理机管理、存储管理、设备管理和文件系统。 处理机管理:最核心的是问题是CPU的时间分配;功能是:确定进程调度策略;给出进程调度算法和进行处理机的分派。 存储管理:任何程序的执行都必须从主存中获取数据信息。功能:1.存储分配和存储无关; 2.存储保护; 3.存储扩充。 文件系统:软件资源是各种程序和数据的集合,操作系统将这些信息组织成文件,以文件的形势进行管理。 操作系统的基本类型:批量操作系统、分时操作系统、实时操作系统。个人计算机操作系统、网络操作系统和分布式操作系统。 分时操作系统特点:1.并行性 2.独占性 3.交互性 实时操作系统:实时应用的目的是监视、响应或控制外部环境。 实时:计算机对外来信息能够以足够快的速度进行处理,并在被控制对象允许的截止期限内作出快速反应。 现代操作系统大多是多用户、多任务的操作系统,所采用的关键性技术是并行处理技术和虚拟技术。

相关文档
最新文档