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

动态链接:链接推迟到加载时或者运行时,外部模块通过动态链接库装载
- 装载时动态链接
- 运行时动态链接:减少装载时的负担,第一次调用的时候需要链接一下,所以第一次比较慢,但是之后就好了,使得程序的模块的更小一些,每次运行不是所有的模块都会调用,但是程序员不能很好的控制动态链接库,安全性不一定好
文章作者: 褚成志
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 褚成志的分享站!
相关推荐
2026-04-09
Linux内存管理
内存管理
2026-04-09
进程、线程和协程之间的区别和联系
进程、线程和协程之间的区别和联系一、进程 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。 【进程间通信(IPC)】: 管道(Pipe)、命名管道(FIFO)、消息队列(Message Queue) 、信号量(Semaphore) 、共享内存(Shared Memory);套接字(Socket)。 二、线程 线程,有时被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位。 三、进程和线程的区别与联系【区别】: 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位; 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行; 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。进程所维护的是程序所包含的资源(静态资源), 如:地址空间,打开的文件句柄集,文件系统...
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
阻塞、非阻塞、同步、异步的区别是什么?
同步异步描述的是被调用方。阻塞非阻塞描述的是调用方。二者没有必然联系。 阻塞是调用方A发出命令后,必须等待B返回结果。非阻塞是调用方A发出命令后,A不需要等待B,可以做自己的事情。 同步是B收到A的指令之后会立即执行,A可以得到结果。异步是B收到A的指令之后不会立即执行要做的事情,A的本次调用不会得到结果,但是B执行完要做的事情之后会通知A。 我们常常混淆的同步异步、阻塞非阻塞其实是放在特定场景下的,不能一概而论,IO也分为磁盘IO和网络IO。这里所讲的IO一般指网络IO。 阻塞IO和非阻塞IO:指的是socket编程中发起read函数系统调用读取数据后是否阻塞住 如果一直等待到有数据才返回,这个read就是阻塞的,也是同步的 如果没有数据就返回-1而不是等待,这个read就是非阻塞的,也是同步的 同步IO和异步IO:指的操作系统内核是否自动将数据从内核空间拷贝到用户空间 如果需要read函数自己将数据拷贝到用户空间就是同步IO 如果内核自动将数据拷贝到用户空间,并且通知用户,就是异步IO(一般在Linux上用的少,windows有完整实现) 同步执行和异步执行:指...
2026-04-09
Linux操作系统扫盲汇总
Linux操作系统扫盲汇总linux 基本概念概括 VFS 树链接:虚拟文件系统就是一个树,树的根部就是 / , 树上不同的节点,都会指向不同的物理地址(文件系统的目录树的不同节点其实是来自不同的分区),可以是具体的文件系统,或者网络节点,或者自己虚拟的节点。不同的dev就相当于是挂载到了树上的不同的节点,也就是一个文件夹 FD:文件描述符,指向INODE,进程打开文件的时候使用FD找到文件,同时FD是有数量限制的,默认是一个进程1024,可以使用<font style="color:#F5222D;">ulimit -SHn 65535</font> 临时修改,也可以修改文件 <font style="color:#F5222D;">/etc/security/limits.conf</font> 永久生效,在最后一行加入<font style="color:#F5222D;">- nofile 65535</font>参考 FD是进程而言的,IN...
2026-04-09
进程间的通信⽅式有哪些?区别是什么,为什么需要?
进程间的通信⽅式有哪些?区别是什么,为什么需要?导图有笔记 https://www.processon.com/view/link/60ef10dae0b34d06fba96f3d 进程的通信有 6 种,分别是:管道、消息队列、共享内存、信号量、socket,信号。 他们的区别,有哪些应⽤,为什么需要这些? 管道匿名管道: Linux 命名的估计都懂这条语句的含义,其中”|“是管道的意思,它的作用就是把前一条命令的输出作为后一条命令的输入。在这里就是把 netstat -tulnp 的输出结果作为 grep 8080 这条命令的输入。如果两个进程要进行通信的话,就可以用这种管道来进行通信了,并且我们可以知道这条竖线是没有名字的,所以我们把这种通信方式称之为匿名管道。并且这种通信方式是**单向**的,只能把第一个命令的输出作为第二个命令的输入,如果进程之间想要互相通信的话,那么需要创建两个管道。 命名****管道: 下面我们来创建一个命名管道。 执行之后会卡住 在另一个进程里面执行输出管道内容就可以了 从上面的例子可以看出,管道的通知机制类似于缓存,就像一个进程把数据放在某个...
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
