《UNIX环境高级编程》学习心得 一

本文内容大部分摘自《UNIX环境高级编程》,附有部分个人心得。

1、unix体系结构

从严格意义上来说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。
我们通常将这种软件称为内核(kernel),因为它相对较小,而且位于环境核心。如图显示unix体系结构。

内核接口被称为系统调用(system call)。公用函数库构建在系统调用接口之上,应用程序既可食用公用函数库,也可以使用系统调用。
shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。

从广义上来讲,操作系统包括内核和其他软件。

2、登陆

用户在登陆unix系统时,要先键入登录名,然后键入登录口令。系统在其口令文件(通常是/etc/passwd文件)中查看登录名。
口令文件中的登陆项是由七个以冒号为分隔的字段组成,依次是:登录名、加密口令、数字用户ID、数字组ID、注释字段、起始目录以及shell程序(我理解为系统调用的权限)

root:*:0:0:System Administrator:/var/root:/bin/sh
名   :密:户:组:          注                           :     目            :   shell

巧计:明迷糊租住木鞋

3、文件和目录

3.1 文件系统
    unix文件系统是目录和文件的一种层次结构(树形结构),所有东西的起点是根(root)目录,根目录的名称是“/”。
    3.2 文件名
    目录中的各个名字称为文件名(filename)。只有斜线(/)和空字符不能出现在文件名中。斜线用来分割路径,空格用来终止一个路径名。
    3.3 路径名
    由斜线分隔的一个或多个文件名组成的序列(可以以斜线开头)构成路径名(pathname),以斜线为开头的路径名为绝对路径(absolute pathname),否则称为相对路径名(relative pathname)。

4、程序与进程

4.1、程序:

程序(program)是储存在磁盘上某个目录中可执行的文件。内核使用exec还书将程序读入内存,并执行程序。

4.2、进程和进程ID

程序执行实例被称为进程(process)。unix系统确保每个进程都有一个唯一的数字标识符,成为进程ID(process ID),进程ID总是一个非负整数。

4.2.1、进程控制

有三个用于控制进程的主要函数:fork、exec、waitpid。

4.3、线程和线程ID

线程(thread):资源执行的基本单位

线程ID:唯一地标识了一个进程中的线程,它只在所属进程中有效,一个进程的线程ID到了另一个进程中毫无意义。

注:线程可以共享同一地址空间、文件描述符、栈、进程相关的属性。

时间: 2024-10-08 09:12:53

《UNIX环境高级编程》学习心得 一的相关文章

UNIX环境高级编程学习笔记(第一章UNIX基础知识)

总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时候使用的平台是Windows+VMware+debian,使用secureCRT来连接(可以实现多个终端连接). 因为第一章是本书大概的描述,所以第一章的我打算写得详细一点,而且书本的原话占的比例会比较多,重点的东西会用粗体显示出来. 1.1  引言 所有操作系统都为他们所运行的程序提供服务.典型的

UNIX环境高级编程学习环境搭建---apue.h

本菜刚刚学习UNIX下高级编程,无奈搭建本书编程环境时遇到不少问题.幸好网上有各种大神的解决办法让我最终解决了问题.在这里感谢为LINUX开源操作系统奋斗的大神. 不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多. 话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu 14.04LTS) 1.在网上下载书中源代码,点击打开链接 2.解压文件:tar -zxvf *.tar.gz 3.

Unix环境高级编程学习笔记(五):进程控制

1 getpid函数,getppid函数,得到进程id,得到父进程id #include<unistd.h> pid_t getpid(void) pid_t getppid(void) uid_t getuid(void)得到实际用户id uid_t geteuid(void)得到有效用户id gid_t getgid(void)得到实际组id gid_t getegid(void)得到有效组id 2 fork函数,当前进程创建新进程 #include<unistd.h> pid

Unix环境高级编程学习笔记(四):进程环境

1 exit函数与_Exit函数 #include<stdlib.h> void exit(int status) void _Exit(int status) 这两个函数的不同之处在于exit函数先执行清理工作后再进入内核(清理I/O缓冲),_Exit函数直接进入内核 2 atexit函数,登记函数,在exit的时候执行 int atexit(void (* func) (void)); 被登记的函数称为终止处理函数,这些函数的调用顺序与登记顺序相反,如果一个函数被登记多次,也会被调用多次

Unix环境高级编程学习笔记(七):线程

1 线程包含线程ID,一组寄存器的值,栈,调度优先级和策略,信号屏蔽字,errno变量,以及线程私有数据.进程的所有信息对于该进程的所有线程都是共享的,包括可执行程序文本,程序全局内存和堆内存,栈以及文件描述符. 线程可以通过pthread_self函数获得自身线程ID #include<pthread.h> pthread_t pthread_self(void) 新增进程可以通过pthread_create函数创建 #include <pthread.h> int pthrea

Unix环境高级编程学习笔记(三):标准I/O , 系统数据文件和信息

1 标准I/O函数不同于read,write函数,是其在流上进行操作, 当首次调用标准I/O函数时,系统会首先调用malloc,为流创造缓冲区, 2 fopen函数 #include<stdio.h> file * fopen(const char* pathname, const char * restrict name); 打开返回指针,出错返回NULL, type的取指有r(读),w(写),a(追加),r+/w+(读+写),a+(读+写+追加) int fclose(file* fp)

OS X下UNIX环境高级编程(第三版)学习日志-第一章ChapterI,编译apue包与第一个例程

1.从网络上获取代码,地址如下apue最新官方下载地址 2.解压到本地 由于最新版本是第三版(3rd Edition),apue.3e,就是我们要的源代码 3.编译源代码 编译过程中笔者并未遇到任何问题,所以建议大家也下载最新版本的代码来学习,贴一下笔者的环境信息 Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple

Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APU

【转】apue《UNIX环境高级编程第三版》第一章答案详解

原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此,我要感谢网易的一个工程师朋友和室友,没有他们,我不会开始真正的学习这本书,希望大家以后开始慢慢进步.废话少说,直接上课后习题了. UNIX高级编程第一章习题答案: 1.1在系统上验证,除根目录外,目录l和l l是不同的. 答:这个验证有很多方法可使用命令ls .cd.vim等,目录.指向当前目录,目录..指