Linux基础
1.进程管理:
1)一个正在执行的程序
2)有自己的地址空间
3)一个CPU核同一时间只能进行一个进程
4)由ID(PID)和父ID(PPID)唯一识别 //子进程是根据父进程为模板拉起的新进程
2.进程调度:进程会被放进一个队列从队列第一个开始取,以至于每一个进程都会被取得,不会有进程被饿死。//记一下不同字符表示的不同进程状态
3.文件系统:
1)Linux中一切皆视为文件 //操作都是相通的不用记忆不同文件系统的不同操作指令
2)Linux通过虚拟文件系统VFS来对所有不同的文件系统进行统一的操作调度 //VFS会抹平不同文件系统之间的差异并且向调用双方提供一个统一标准的操作接口和接入接口 3)文件读取流程
首先是用户发来一个请求,然后会先到用户缓冲区去寻找有没有相关文件的缓存,如果有则直接读取文件并返回,如果没有则会发起一次系统调用,此时便会从用户态变为内核态,然后也是先到内核缓冲区去寻找有没有相关文件的缓存,如果有则读取并交给用户,如果没有则通过DMA向磁盘发起请求直接进行访问。然后将文件copy到内核区再由CPU copy到用户缓冲区,CPU会将文件copy到Socket缓冲区然后由DMA将所有的文件数据copy到网卡来交给用户 //DMA可以直接与磁盘交互
Go语言进阶与依赖管理
1.go提倡通过通信来共享内存而不是通过共享内存来实现通信
2.1)make(chan int,2)有缓冲通道 2)make (chan int)无缓冲通道
3.在执行并发程序的时候,利用sync包lock.Lock加锁lock.Unlock解锁来保证并发执行时的安全,如果不上锁输出的时候有可能会有数据丢失输出一些奇奇怪怪的数据