Linux系统编程简介
来源:互联网 发布:win10用c语言编程软件 编辑:程序博客网 时间:2024/06/11 18:32
一、Linux内核模块
1、 进程调度
2、 内存管理
3、 VFS
4、 网络接口
5、 进程间通信
二、操作系统三个基本抽象
1、 文件是对I/O设备的抽象表示,虚拟存储器是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。
2、
3、 进程是操作系统对正在运行的程序的一种抽象。一个系统可以运行多个进程,而每个进程好像在独占使用硬件。
4、 虚拟存储器
q 虚拟存储器为每个进程提供了一个大的、一致的、私有的地址空间
q 它将内存看成是存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在主存与磁盘中来回交换数据。
q 为每个进程提供一致的地址空间,简化了存储管理
q 保护每个进程的地址空间不被其他进程破坏。
5、 进程虚拟地址空间
6、 文件
q 文件是一系列的字节序列
q 它向应用程序提供了一个统一的视角,来看待系统中各式各样的I/O设备。
7、 虚拟文件系统
q 虚拟文件系统是内核实现的一种架构,为用户空间提供统一的文件操作接口,即文件系统调用。它在内核内部为不同的真实文件系统提供一致的抽象接口。
q 用户通过系统用与内核中的虚拟文件系统交互,进而操作实际的文件系统和设备。
Linux系统编程介绍
一、系统编程与应用编程
q 系统编程
在操作系统之上利用系统调用、C库进行对系统资源进行访问。如apache、gcc、gdb等
q 应用编程
在更高层次的编程接口或者库之上构建应用程序。如android程序(android sdk)、iphone程序(iphone sdk)、QT程序设计(QT)MFC程序设计(MFC)等。
二、系统调用与C库的关系
q 系统调用与C库从形式上来看都C函数
q C库函数有些是调用系统调用来实现的,比如说malloc、free调用brk,printf调用write系统用,有些函数不需要任何系统调用,比如abs、strcpy、atoi等,因为它并不是必需要使用内核服务
q 系统调用通常提供的是最小界面,而C库函数通常提供更复杂的功能。
三、内核如何处理系统调用
q 每个系统调用被赋予一个系统调用号
q 在i386平台上,执行一个系统调用是通过int 0x80指令完成的。
q eax存放系统调用号
q ebx、ecx、edx、esi、edi存储系统调用参数,对于超过5个参数的系统调用,用一个寄存器指向用户空间存储所有系统调用参数的缓存。
四、错误处理
q 在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。
q errno这个全局变量在<errno.h>头文件中声明如下:extern int errno;
q 错误处理函数
q perror
q strerror
//01error.c
#include<unistd.h>
#include<stdio.h>
#include<errno.h>
#include<string.h>
intmain()
{
int ret;
ret = close(10);
if(ret == -1)
perror(“close error:”);
if(ret == -1)
fprintf(stderr,”closeerror:%s\n”,strerror(errno));
printf(“INT ERROR:%s\n”,strerror(EINTR));
return 0;
}
六、错误代码
E2BIG 参数列表太长
EACCESS 权限不足
EAGAIN 重试
EBADF 错误的文件描述符
EBUSY 设备或资源忙
ECHILD 无子进程
EDOM 数学参数不在函数域内
EEXIST 文件已存在
EFAULT 地址错误
EFBIG 文件太大
EINTR 系统调用被中断
- Linux系统编程简介
- 进程间通信简介(IPC)--《linux/unix系统编程手册》
- Linux网络编程简介
- Linux编程库简介
- linux shell 编程简介
- Linux编程库简介
- Linux串口编程简介
- linux编程-进程简介
- Linux shell编程简介
- Linux 系统简介
- Linux 系统简介
- Linux系统调用简介
- Linux系统简介
- Linux系统简介(-)
- Linux系统简介
- Linux系统简介
- 第一章 Linux系统简介
- Linux 系统简介
- 7.linux档案与目录管理
- iOS开发如何实现消息推送机制
- webrtc工程DEMO建立
- php 多编码扫描
- USB Camera摄像头(UVC 与 gspca)
- Linux系统编程简介
- 基于ZedBoard的Webcam设计(一):USB摄像头(V4L2接口)的图片采集
- Project Euler 16: Power digit sum.
- poj 1149题解
- hdu4310(贪心)
- java集合框架总结
- 基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
- 文件与I/O
- 现在我又迷茫了~