系统调用与计算机CPU工作模式

一、系统调用

  • 创建进程

需要由老的进程执行fork系统调用得到新的子进程;

fork:子进程拷贝一份父进程一模一样的数据结构,内存,程序代码等;(先拷贝,再修改)

  • 进程的私有内存

每个进程启动后都会在内存中分配一块空间;(放程序的代码段 + 进程运行时产生的数据段)

  • 进程数据段内存分配

局部变量==》栈中;手动回收的数据==》堆中;

只有当进程要向内存中写入数据的时候,发现没有对应的物理内存,才会触发中断,被分配一块物理内存(brk系统调用方法会划出少量的内存空间并紧挨着原来的进程数据段;当请求写入大量的物理内存时用mmap系统调用的方法划出一块完整的空间,但是不一定与原来的数据段内存空间紧邻)

  • 一切皆文件:统一了操作的入口

对所有的东西都可以通过六个系统调用进行操作:open、close、create、lseek、read、write(打开、关闭、创建、定位、读、写)

管道文件:将一个进程的输出作为另一个进程的输入;
socket文件:进程间通过网络进行通信;

每一个文件对应一个文件描述符,来供系统调用;

  • 进程间通信
  1. 少量数据:消息队列;
  2. 大量数据:共享内存;(共享内存的并发访问问题:semaphore规定同一时间可以有几个访问者)
  3. 跨机器进程通信:系统调用基于TCP/IP协议的Socket建立通信;

系统调用总结图

请添加图片描述

二、计算机的工作模式

  • 每个进程在内存中占据一块空间:进程空间 = 指令集 + 数据集;
  • CPU = 控制单元 + 计算单元 + 数据单元;

CPU控制单元中的指令寄存器先从进程的指令集中读取下一条指令 — >
指导计算单元和数据单元执行该指令,其中数据单元会读取进程数据集中的数据 — >
计算完成后将运算结果写回进程的数据集;

总线:主要分为地址总线 + 数据总线;(每一类总线有好几根)
地址总线:决定CPU能访问的内存地址范围;
数据总线:决定CPU一次能从内存中获取的数据量大小;

CPU执行指令总结图:
请添加图片描述

精简版:
请添加图片描述

参考文章:

https://time.geekbang.org/column/article/89417

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值