- 01-Linux命令基础习惯
- 02-类Unix系统目录
- 03-目录和文件操作1
- 04-目录和文件操作2
- 05-软连接和硬链接
- 06-创建修改用户和用户组
- 07-find命令1
- 08-午后回顾
- 09-find命令2
- 10-grep和xargs
- 11-xargs加强和awk说明
- 12-软件包安装
- 13-压缩命令gzip和bzip2
- 14-rar压缩和zip压缩
- 15-其他命令
- 16-总结
- 17-复习
- 18-vim的三种工作模式
- 19-vim基本操作-跳转和删字符
- 20-vim基本操作-删除
- 21-vim基本操作-复制粘贴
- 22-vim基本操作-查找替换
- 23-vim基本操作-其他
- 24-vim配置思路
- 25-gcc编译4步骤
- 26-gcc编译常用参数
- 27-午后复习
- 28-动态库和静态库理论比对
- 29-静态库制作
- 30-静态库使用及头文件对应
- 31-动态库制作-生成与位置无关代码
- 32-动态库制作-演示
- 33-动态库加载错误原因及解决方式
- 34-动态库加载错误原因及解决方式2
- 35-扩展讲解-数据段合并
- 36-总结
- 37-复习
- 38-gdb调试基础指令
- 39-gdb调试其他指令
- 40-gdb常见错误说明
- 41-makefile基础规则
- 42-makefile一个规则
- 43-午后回顾
- 44-makefile2个函数和clean
- 45-makefile3个自动变量和模式规则
- 46-习题和作业
- 47-系统编程阶段说再前面的话
- 48-open函数
- 49-总结
- 50-复习
- 51-makefile作业
- 52-read和write实现cp
- 53-系统调用和库函数比较---预读入缓输出
- 54-文件描述符
- 55-阻塞和非阻塞
- 56-fcntl改文件属性
- 57-午后回顾
- 58-lseek函数
- 59-传入传出参数
- 60-目录项和inode
- 61-stat函数
- 62-lstat和stat
- 63-传出参数当返回值
- 64-link和UNlink隐式回收
- 65-文件目录rwx权限差异
- 66-目录操作函数
- 67-总结
- 68-复习
- 69-递归遍历目录思路分析
- 70-递归遍历目录代码预览
- 71-递归遍历目录实现
- 72-递归遍历目录总结
- 73-dup和dup2
- 74-fcntl实现dup描述符
- 75-复习
- 76-进程和程序以及cpu相关
- 77-虚拟内存和物理内存映射关系
- 78-pcb进程控制块
- 79-环境变量
- 80-fork函数原理
- 81-fork创建子进程
- 82-getpid和getppid
- 83-循环创建多个子进程
- 84-父子进程共享哪些内容
- 85-父子进程共享
- 86 - 总结
- 87 -复习
- 88-父子进程gdb调试
- 89-exec函数族原理
- 90-execlp和execl函数
- 91-exec函数族特性
- 92-孤儿进程和僵尸进程
- 93-wait回收子进程
- 94-获取子进程退出值和异常终止信号
- 95-waitpid回收子进程
- 96-中午回顾
- 97-错误解析
- 98-waitpid回收多个子进程
- 99-wait和waitpid总结
- 100-进程间通信常见方式
- 101-管道的特质
- 102-管道的基本用法
- 103-管道读写行为
- 104-父子进程通信练习分析
- 105-总结
- 106-复习
- 107-父子进程lswc-l
- 108-兄弟进程间通信
- 109-多个读写端操作管道和管道缓冲区大小
- 110-命名管道fifo的创建和原理
- 111-fifo实现非血缘关系进程间通信avi
- 112-文件用于进程间通信
- 113-mmap函数原型
- 114-复习
- 115-mmap建立映射区
- 116-mmap使用注意事项1
- 117-mmap使用注意事项2
- 118-mmap总结
- 119-父子进程间mmap通信
- 120-无血缘关系进程间mmap通信
- 121-mmap总结
- 122-mmap匿名映射区
- 123-总结
- 124-复习
- 125-信号的概念和机制
- 126-与信号相关的概念
- 127-信号屏蔽字和未决信号集
- 128-信号四要素和常规信号一览
- 129-alarm函数
- 130-kill函数和kill命令
- 131-setitimer函数
- 132-午后回顾
- 133-信号集操作函数
- 134-信号集操作函数使用原理分析
- 135-信号集操作函数练习
- 136-signal实现信号捕捉
- 137-sigaction实现信号捕捉
- 138-信号捕捉的特性
- 139-内核实现信号捕捉简析
- 140-借助信号捕捉回收子进程
- 141-慢速系统调用中断
- 142-总结
- 143-复习
- 144-复习子进程借助信号回收
- 145-会话
- 146-进程组
- 147-守护进程创建步骤分析
- 148-守护进程创建
- 149-三级映射
- 150-线程概念
- 151-线程共享和非共享
- 152-中午复习
- 153-创建线程
- 154-循环创建多个子线程
- 155-错误分析
- 156-线程间全局变量共享
- 157-pthread_exit退出
- 158-pthread_join
- 159-pthread_join作业
- 160-pthread_cancel函数
- 161-检查出错返回
- 162-线程分离pthread_detach
- 163-进程和线程控制原语比对
- 164-线程属性设置分离线程
- 165-线程使用注意事项
- 166-总结
- 167-复习
- 168-线程同步概念
- 169-锁使用的注意事项
- 170-借助互斥锁管理共享数据实现同步
- 171-互斥锁使用技巧
- 172-try锁
- 173-读写锁操作函数原型
- 174-死锁两种
- 175-读写锁原理
- 176-读写锁
- 177-午后复习
- 178-静态初始化条件变量和互斥量
- 179-条件变量相关函数wait
- 180-条件变量的生产者消费者模型分析
- 181-条件变量实现生产者消费者代码预览
- 182-条件变量实现生产者消费者代码实现
- 183-多个消费者使用while做
- 184-条件变量signal注意事项
- 185-信号量概念及相关操作函数
- 186-信号量实现的生产者消费者
- 187-总结
什么是操作系统?
概念:
操作系统是管理和控制计算机硬件资源的计算机程序,应用软件必须在操作系统的支持下才能运行。操作系统是用户和计算机的接口。
功能:
1.进程管理(Process control)
2.内存管理(Memory management)
3.文件系统管理(Filesystem
management)
4.设备驱动(Device drivers)
5.系统调用(System call)
特点:
操作系统的内核直接参考硬件规格写成,所以不同的硬件架构下不能运行同一版本的操作系统。
基于安全和稳定的考虑,划分内核空间和用户空间,用户空间的程序禁止直接执行内核空间的代码或数据。
操作系统内核只管理硬件资源,如果没有其他应用程序辅助,计算机只能处于就绪状态,无法进行其它操作。
什么是系统调用?
操作系统的特点决定了内核必须提供一种机制,使得用户空间的程序能够发送信号通知内核,使其深入到内核中,执行那些只有内核才允许执行的代码。这些用来响应用户请求的程序就称为系统调用。
当用户空间的程序(如文本编辑器),想从操作系统获得服务或者使用硬件资源时,就要向内核发起系统调用。
Linux内核为Alpha、i386、PowerPC等架构各自实现了系统调用,其中i386架构大约有300系统调用。
令什么是系统编程?
>概念:
从用户空间通过系统调用向内核发出请求,从而获得操作系统提供的服务或者硬件资源的过程,就称为系统编程。
>分支:内核开发设备驱动
>三要素:
系统调用、C库、C编译器