学习笔记1-深⼊理解Android内核设计思想4.1 计算机体系结构(Computer Architecture)
4.1.1 冯·诺依曼结构
两个深远影响的观点:
采⽤⼆进制,抛弃⼗进制
程序存储(stored-program)
4.1.2 哈佛结构
对冯诺依曼结构的改进与完善,区别在指令与数据并不保存在同⼀个存储器。
这意味着:
指令与数据可以有不同的的数据宽度;
执⾏速度更快。
计算机结构的基本元素:
中央处理器(CPU)
内存储器
I/O设备
4.2 什么是操作系统
定义:
计算机操作系统是负责管理系统硬件,并为上层应⽤提供稳定编程接⼝和⼈机交互界⾯的软件集合。
最核⼼的⼯作:硬件管理与抽象。
肩负两⼤重任:
⾯向下层:管理硬件(CPU、内存、Flash、各种IO设备)
⾯向上层:⼀⽅⾯,为⽤户提供可⽤的⼈机交互界⾯;另⼀⽅⾯,负责为第三⽅程序的研发提供便捷、可靠、⾼效的API。
操作系统的难点:进程和内存管理、硬件驱动的⽀持等,这正是Linux的长处所在。
4.3 进程间通信的经典实现
进程间的通信(Inter-process communication,IPC)是指运⾏在不同进程(不论是否在同⼀台机器)中的若⼲线程间的数据交换。实现⽅式:消息传递、管道、⽂件共享、操作系统提供的公共信息机制等等。
4.3.1 共享内存(Shared Memory)
⼀种常⽤的IPC机制,优势:共享内存区域,减少数据的复制操作,速度快。
实现步骤:
创建内存共享区
映射内存共享区
访问内存共享区
进程间通信
撤销内存映射区
删除内存共享区
4.3.2 管道(Pipe)
⼀种常见的IPC⽅式
分⽴管道的两边,进⾏数据的传输通信
管道是单向的
⼀根管道同时具有“读取”端(read end)和“写⼊”端(write end)
管道有容量限制
4.3.3 UNIX Domain Socket(UDS)
专门针对单机内的进程间通信,有时称为IPC Socket。
Network Socket是以TCP/IP协议栈为基础,UDS因为是本地内的“安全可靠操作”,实现机制上并不依赖于这些协议。典型流程:
UDS的基本流程与传统Socket⼀致,只是在参数上有区分:服务器端监听IPC请求;
客户端发起IPC申请;
双⽅成功建⽴起IPC连接;
客户端向服务端发送数据,证明IPC通信是有效的
4.3.4 Remote Procedure Calls(RPC)
涉及的通信双⽅通常运⾏于两台不同的机器中。
4.4 同步机制的经典实现
同步:如果多个进程间存在时序关系,需要协同⼯作以完成⼀项任务linux内核设计与实现 pdf
互斥:如果多个进程并不满⾜协同的条件,⽽只是因为共享具有排他性的资源时所产⽣的关系。
4.4.1 信号量(Semaphore)
涉及的元素:信号量(S)、PV原语操作(有时称wait()、signal())。
S:共享资源的可⽤数量
P: 减少S的计数(进⼊共享区的操作)
V:增加S的计数(退出共享区的操作)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论