Linux网络编程

1.程序和进程
程序:编译好的二进制文件,在磁盘上,不占用系统资源(CPU,内存,打开的文件,设备,锁...)
进程:与操作系统联系紧密,进程是活跃的程序,占用系统资源,在内存中执行(程序运行起来,产生一个进程)
2.并发
3.并行
4.单道程序 多道程序
5.CPU 和 MMU
Linux网络编程

32位与64位主要针对的是寄存器 32位: 4字节 64位: 8字节
寄存器 速度快 容量小
硬盘 速度慢 容量大

6.硬盘到cpu
硬盘 -> 内存 -> 寄存器 -> cpu(cpu 中存储的其实是一条一条的指令( 二进制)(预处理 -> 编译 ->汇编 ->链接 ))

预取器:从内存中把指令取出来
译码器:解析指令,查看需要哪些寄存器来完成现在想要实现的功能
ALU:用来运算 只会加法和左移,算法回写到寄存器
7.MMU作用
Linux网络编程

虚拟地址:可用的地址空间 实际占用的内存没有那么多

MMU:虚拟地址与物理内存的映射
设置修改内存的访问级别(MMU在映射时 也会设置访问级别 为cpu设置 Linux只使用3级(用户空间)和0级(内核空间))
Linux网络编程

进程之间是互相独立的
同一程序虽然是不同的进程但是同用同一块内核空间。
pcb是位于内核空间当中,当时两个进程的pcb内容不一样,但是位于同一块物理内存

进程控制块 pcb

每个内核中都有一个进程控制块(PCB)来维护进程相关信息,linux内核进程控制块是task_struct结构体
主要掌握:

1.进程Id:每个进程都有唯一的id,在c语言中用pid_t类型表示,是一个非负整数
2.进程的状态:就绪 运行 挂起 停止

  1. 进程切换时需要保存和恢复的一些cpu寄存器
    4.描述虚拟地址空间的信息
    5.描述终端的信息
    6.当前工作目录
    7.umask掩码
    8.文件描述符,包含很多指向file结构体的指针

Linux网络编程

上一篇:Linux - CentOS 7 通过Yum源安装 Nginx 设置自启


下一篇:【操作系统实验】进程同步控制:基于信号量控制的读-写问题