IO 课程属于:Linux 下的高级编程,也称为Linux系统编程,也就是应用层和内核层之间的接口层。
1. 为什么要学Linux 下的高级编程?
应用层的学习:不知道Linux内核的强大功能
Linux 下高级编程的学习:能感知到内核的存在和内核的强大功能
linux内核5大功能:
文件管理
进程管理
设备管理
内存管理
网络管理
举例:printf write
write函数:
#include <unistd.h>
#include <stdio.h>
int main()
{
write(1, "hello linux\n", 128);
return 0;
}
2. 怎样学Linux 下高级编程?
Linux 下高级编程的特点:涉及到内核向用户空间提供的接口(函数)。
3. 为什么内核要提供这些接口呢?
主要原因:
A:内核要为应用程序服务,应用程序如果没有内核服务,则应用程序功能非常单一。
B:内核是一个稳定的代码,同时也要为多个用户空间的程序服务,为了防止用户空间的某些用户程序使内核代码崩溃或产生其它问题,从而不能为其它用户服务。
所以,内核向用户空间提供的接口(函数),在这些接口函数中加上一些保护,这样会使符合接口函数的应用提供服务,同时也保护内核。
4. 这一部分重点是在学习这些接口上面。怎样学习呢?
应用层学习的是程序的实现,即算法思路。
在系统编程阶段主要任务是系统调用接口(函数),接口的功能、参数、返回。
5. 这一部分主要涉及哪些相关课程?
IO:
文件IO
标准IO
目录IO
进程:
进程控制
线程(线程的控制,线程的同步与互斥)
进程通信(无名管道,有名管道,信号,IPC(共享内存,消息队列,信号灯)
====》一台机器上两个进程之间的通信。
网络:仍属于进程通信,它是一个网络中两台机器之间的两个进程之间的通信。
TCP
UDP
服务器代码的完善(循环服务器,并发服务(多进程,多线程,多路复用))
IO模型:信号驱动IO,阻塞IO,多路复用IO