基础概念
原子性:不可分割性。如果变量是原子的,则对这个变量的访问和更改都是原子的。若操作是原子的,则操作要么成功要么失败, 没有中间态。
可重入函数:可成功进入并执行。如果当前一个进程处于这个函数,程序允许当前进程的某个执行流程再次进入这个函数且不会引 发问题(如多线程、信号处理、Longjump)。可重入函数一定线程安全,线程安全函数(多线程环境下可安全执行即 逻辑和结果不会出错的函数)不一定是可重入函数。
阻塞与非阻塞:Linux下对应I/O操作。阻塞的系统调用指当进行系统调用时除非出错(或被信号打断)否则进程将一直会陷入内核 态直到调用完成。非阻塞系统指无论I/O操作是否完成,调用都会立即返回。
同步与非同步(异步):指I/O数据的复制工作是否同步执行。
并行与并发:并行指两个或多个事件在同一时刻发生(时间点),并发指两个或多个事件在同一时间间隔发生(一段时间多个程序 同时运行)。
程序与进程(process):进程是系统中能独立运行并可以作为资源分配的基本单位,是由一组机器指令、数据、堆栈等组成的能 独立运行的活动实体。多个进程之间可以并发执行和交换信息。进程需要的资源如CPU、存储空间或I/O设备。
进程与程序关系的例子:某一个应用程序包含两部分,计算程序和I/O程序。程序是静态实体,并不能独立运行或和其 他程序并发执行,只能顺序执行。可以为这两个程序建立两个进程,并发运行两个进程,从而实现同时计算和I/O。
线程(thread):一个进程可以包含多个线程,线程基本不拥有系统资源,可以用于独立运行和调度。
共享:多个并发执行的进程或线程可以访问系统资源。包含互斥共享或同时访问两种方式。
操作系统的主要功能:处理机管理、存储器管理、设备管理、文件管理
处理机管理:进程控制(创建、删除等,常用fork、exec、waitpid)、进程同步、进程通信
存储器管理:内存分配、内存保护、地址映射、内存扩充
设备管理:缓冲管理、设备分配、设备处理
文件管理:文件存储空间管理、目录管理、文件的读写管理和保护
以下是一些小技巧:
1. $ man 查看帮助命令 ,如 man -l ls
2.可以自定义一个头文件"apue.h"中包含常用头文件如下:
<stdio.h> //标准IO库 ISO C
<stdlib.h> //包含exit函数 ISO C
<unistd.h> //所有标准unix函数原型,符号常量 POSIX
<string,h> //字符串操作 ISO C
<sys/types.h> //基本系统数据类型 POSIX
<sys/stat.h> //文件状态 POSIX
<termios.h> // 终端I/O POSIX
<stddef.h> //标准定义 ISO C
<signal.h> //信号 ISO C
可能会用到的头文件:
<fcntl.h> //文件控制 POSIX
<pthread.h> //线程 POSIX
<arpa/inet.h> //因特网定义 POSIX
<net/if.h> //套接字本地接口 POSIX
<netinet/in.h> //因特网地址族 POSIX
<netinet/tcp.h> //传输控制协议定义 POSIX
<sys/select.h> //select函数 POSIX
<sys/socket.h> //套接字接口 POSIX
<sys/wait.h> //进程控制 POSIX
3.更改工作目录可用命令 chdir