系统软件
发表于|更新于|计算机基础
|浏览量:
编译时绑定Compile time binding :给定明确的代码
装载时绑定Load time binding:装载到内存里面不可以再修改
运行时绑定Run time binding:模块不运行就不会加载
链接:不同的二进制文件形成一个单一的可执行文件,编译的时候先生成一个符号表,之后再替换

动态链接:链接推迟到加载时或者运行时,外部模块通过动态链接库装载
- 装载时动态链接
- 运行时动态链接:减少装载时的负担,第一次调用的时候需要链接一下,所以第一次比较慢,但是之后就好了,使得程序的模块的更小一些,每次运行不是所有的模块都会调用,但是程序员不能很好的控制动态链接库,安全性不一定好
相关推荐
2026-04-09
输入输出和存储系统
AMDAHL定律(阿姆达尔)计算机系统整体性能的速度提升(加速比)取决于某个特定部件本身的加速率和该部件在系统中的使用率。公式表示为 式中,S为系统整体性能的加速率,f表示待替换部件完成的工作部分,k为新部件的加速率。 例如,某计算机需要70%时间执行CPU操作和30%时间等待磁盘服务,当前有两种升级方案:10000使得处理器价格提高50%,或7000使得磁盘处理能力为当前系统的250%。若选择升级处理器,则f = 0.70,k = 1.5,S = 1 / ((1-0.7)+0.7/1.5) = 1.30;若选择升级磁盘,则f = 0.30,k = 2.5,S约为1.22。由此可看出升级处理器带来的整体性能提升更高,但考虑价格因素,对提升的每个百分点,升级CPU需要333,而升级磁盘只要318。 计算加速比: A为200,B为100,A是B的2倍,A比B快2倍,A比B快100%, 加速比就是1+N/100,而不是N,CPU比当前的快了50%,则它的加速比就是1.5 阿姆达尔的应用: 通用...
2026-04-09
内存知识总结
虚拟内存与多级页表对普通进程来说,能看到的其实是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理内存。 当进程通过 malloc() 申请虚拟内存后,系统并不会立即为其分配物理内存,而是在首次访 问时,才通过缺页异常陷入内核中分配内存。 内存缓存为了协调 CPU 与磁盘间的性能差异,Linux 还会使用 Cache 和 Buffer ,分别把文件和磁 盘读写的数据缓存到内存中。 内存回收一旦发现内存紧张,系统会通 过三种方式回收内存: 基于 LRU(Least Recently Used)算法,回收缓存; 基于 Swap 机制,回收不常访问的匿名页; 基于 OOM(Out of Memory)机制,杀掉占用大量内存的进程。 直接内存回收:缓存回收和 Swap 回收实际上都是基于 LRU 算法,也就是优先回收不常访 问的内存。LRU 回收算法,实际上维护着 active 和 inactive 两个双向链表,其中: active 记录活跃的内存页; inactive 记录非活跃的内存页。 越接近链表尾部,就表示内存页越不常访问。这样,在回收内存时,系统就...
2026-04-09
操作系统内存管理思维导图总结
操作系统内存管理思维导图总结笔记在导图里面 https://www.processon.com/view/link/60a2668563768925076bb0cb 操作系统–虚拟内存管理
2026-04-09
进程间的通信⽅式有哪些?区别是什么,为什么需要?
进程间的通信⽅式有哪些?区别是什么,为什么需要?导图有笔记 https://www.processon.com/view/link/60ef10dae0b34d06fba96f3d 进程的通信有 6 种,分别是:管道、消息队列、共享内存、信号量、socket,信号。 他们的区别,有哪些应⽤,为什么需要这些? 管道匿名管道: Linux 命名的估计都懂这条语句的含义,其中”|“是管道的意思,它的作用就是把前一条命令的输出作为后一条命令的输入。在这里就是把 netstat -tulnp 的输出结果作为 grep 8080 这条命令的输入。如果两个进程要进行通信的话,就可以用这种管道来进行通信了,并且我们可以知道这条竖线是没有名字的,所以我们把这种通信方式称之为匿名管道。并且这种通信方式是**单向**的,只能把第一个命令的输出作为第二个命令的输入,如果进程之间想要互相通信的话,那么需要创建两个管道。 命名****管道: 下面我们来创建一个命名管道。 执行之后会卡住 在另一个进程里面执行输出管道内容就可以了 从上面的例子可以看出,管道的通知机制类似于缓存,就像一个进程把数据放在某个...
2026-04-09
IO体系
节点流:直接和设别,特定地方读写 过滤流:(装饰器模式)节点流作为输入或者输出,使用一个存在的输入或者输出流来创建(作为参数传递进去) IO流的链:数据–》缓冲输出流–》文件输出流–》文件。装饰器模式的作用,获取一个 装饰器模式NIO–面向块或者缓冲区编程1.4出来的 NIO组件回顾 Java NIO,它不仅仅可以用在网络编程中,还能用在文件读写等其它场景 Channel–桥梁 java.nio.channels.Channel 实体之间的桥梁,实体可以是硬件设备,文件,网络套接字或者可执行IO操作的程序(Linux中一切皆文件) 不同实体(文件)类型对应不同的类型的Channel: FileChannel : 操作普通文件 DatagramChannel:UDP协议 SocketChannel:TCP协议,客户端和服务端之间的Channel ServerSocketChannel:TCP协议,用于服务端的Channel Buffer–数据容器线性有序序列(数组),存储特定的基本类型。Buffer的类型有CharBuffer,ByteBuffer, ShortBuf...
2026-04-09
操作系统CPU和内核思维导图总结
操作系统CPU和内核思维导图总结https://www.processon.com/view/link/60eef701e0b34d06fba955b4
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
