【Linux】系统调用简单了解
系统调用决定了操作系统是否好用,功能是否齐全。 进程管理 创建进程:fork 原进程叫父进程,新进程叫子进程。 当父进程fork创建子进程时,采用写时拷贝的方案。先是父子共用同一内存,如果有一方要写数据,就会将该内存块进行拷贝。然后再写。 fork可以根据返回值进行对父子进程的区分。 返回0,说明是子进程。 返回非0,说明是父进程,返回的值为子进程的进程号。 子进程可以使用 exec函数族 去执行另一个程序。 父进程可以通过 waitpid系统调用 ,通过传入子进程进程号,来让父进程知道子进程的运行状态。 内存管理 每个进程都有自己独立的内存空间。 该内存空间会放入程序的代码(代码段),程序的数据(数据段)。 (这里牵扯到物理分段分页问题) 在 堆 分配内存的时候使用的系统调用, brk和mmap 。 brk分配的内存是和原来的堆连在一起的,通过调整堆的上线来扩大堆。 mmap是在映射区重新划分一块内存区域。 文件管理 在Linux下一切皆文件。 程序,进程:可执行二进制文件 配置文件:文本文件 进程间通信的管道,Socket:也是文件 设备的存储形式也是吻技安。 每一个文件,Linux都会分配一个文件描述符(一个整数),我们一般通过这个文件描述符来使用系统调用。 信号 程序执行过程中遇到异常等情况就会发生中断,发送信号给进程,进程收到信号后进一步处理。 一般不重要的会忽略