一、学习的知识点
- ls -a 显示隐藏文件
- cd ~ 回到home目录
- 每个文件夹都有两个隐藏目录 一个是 ./ 一个是 …/ 加深了我对Linux 万物文件 的理解(普通文件、目录、设备、套接字)
进程
- 所有的fd
- 内存映射 堆栈 bss rw ro
- 信号集
- 控制主线程:包括屏蔽信号、优先级、各种地址、各种指针
- 新线程:共享上面的资源
线程
多线程处理数据:数据安全问题:资源的抢占
一种制度 一种机制 来控制 资源抢占: 同一时间只能有一个人享受该资源:互斥锁
进程和线程
进程是资源分配的基本单位,线程是CPU调度的最小单位
- CPU就像一座工厂,时刻在运行。
- 假设工厂电力有限,一次只能供给给一个车间使用。也就是说,一个车间开工时,其他车间都必须停工。(单个CPU一次只能运行一个任务)
- 一个车间里,可以有很多工人,他们协同完成一个任务(一个进程可以包括多个线程)
- 车间的空间工人是共享的(一个进程的内存空间是共享的,每个线程都可以使用这些共享内存)
- 每个车间的大小不同,有些车间只能容纳一个人(一个线程使用某些共享内存时,其他线程必须等待它结束才能使用)
- 防止他人进入的简单方法,就是在门口上锁(互斥锁、防止多个线程同时读写某个内存区域)
- 还有些房间,可以同时容纳N个人,人数大于N时,多出来的人只能在外面等待(某些内存区域,只能供给固定数目的线程使用)
- 解决方法是,在门口挂N把钥匙。进去的人取一把钥匙,出来再把钥匙挂回原处,后面的人发现钥匙空了,就必须在门口等待。(信号量,保证多个线程不会互相冲突)
信号量和互斥锁
信号量用来解决外部矛盾(同步问题):生产者生产好东西,让消费者来取
互斥锁用来解决内部矛盾 (互斥问题):多个生产者同时操作一块内存
应用场景
在服务器中 秒杀、抢票
二、上课没有听懂或者没有理解的地方
无