Linux系统编程 39 -系统编程阶段前面说的话
学习笔记
系统调用
讲man page的时候说过
$man man
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g.
man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
1.命令
2.系统调用 (内核提供)
3.库调用
内核就是操作系统的核心程序
操作系统的本质是程序
内核提供的函数服务于上层应用
内核直接和硬件打交道
内核的函数数量有限
内核2.6版本 270多个函数
库函数 很庞大。
操作系统就是内核
限量 限权限的开放,保证系统的安全
$man 2 open
实际上内核源码没有open函数
open真正的系统调用是 sys_open
就是套了一个壳。
操作系统不希望被直接窥探到。所以做了一层封装
做了一层壳
所以严谨的称呼,不应该叫系统调用,应该叫系统函数
用户层
系统调用
内核(含硬件驱动程序)
硬件
我们编写的程序是用户级应用。
printf -》write (sys_write) ->驱动 -》显卡
只有系统调用,才会访问到内核
系统调用要学习下面两部分
1.操作系统的原理
2.函数