- 博客(17)
- 收藏
- 关注
原创 十二、多线程
1.什么是线程?源代码 -编译和链接-> 程序 -加载到内存中-> 进程| |文件 内存/ 代码 <- 执行数据 <- 处理| | <- CPU静态 动态| |资源 线程线程就是进程的执行过程,即进程内部的控制序列,或者说是进程中的一个任务。一个进程可以同时拥有多个线
2022-04-02 21:34:21
242
原创 十一、网络通信
1. 网络和网络协议1) 什么是计算机网络?计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过有形或无形的通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。2) 什么是网络协议?网络协议是一种特殊的软件,是计算机网络实现其功能的最基本的机制。网路协议的本质就是规则,即各种硬件和软件必须遵循的共同守则。网络协议并不是一套单独的软件,它融合于所有涉及网络通信的软件甚至硬件之中,因此可以说协议于网络中无处不在。3
2022-04-01 11:24:16
240
原创 十、进程间通信
1.什么是进程间通信Unix/Linux系统中每个进程都拥有独立的4G字节大小的虚拟内存空间。其中高地址的1G字节被映射到相同的物理内存区域,用于保存内核代码和数据。低地址的3G字节作为保存用户代码和数据的用户空间,被映射到彼此不同物理内存。因此同一个虚拟内存地址,在不同的进程中,会被映射到不同的物理内存区域,在多个进程之间以交换虚拟内存地址的方式交换数据是不可能的。鉴于进程之间天然的内存壁垒,为了能够在不同进程之间高效地交换数据,需要有一种专门的机制,这就是所谓的进程间通信(Inter-Process
2022-03-15 11:58:36
1418
原创 九、 信号
1.基本概念1)什么是信号?信号是提供异步事件处理机制的软件中断。这些异步事件可能来自硬件设备,也可能来自系统内核,甚至可能来自用户程序。进程之间可以相互发送信号,这使信号成为一种进程间通信(Inter-Process Communication, IPC)的基本手段。信号的异步特性不仅表现为它的产生是异步的,对它的处理同样也是异步的。程序设计者不可能也不需要精确地预见什么时候触发什么信号,也同样无法预见该信号究竟在什么时候会被处理。一切尽在内核操控下异步地发生。例如:输入命令,在Shel
2022-03-13 01:09:09
194
原创 八、 进程
1.进程的基本概念程序:磁盘上的可执行文件。进程:内存中的指令和数据,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。2.进程的分类交互式进程:由Shell启动,借助标准I/O与用户交互。批处理进程:在无需人工干预的条件下,自动运行一组批量任务。守护(精灵)进程:后台服务,多数时候处于待命状态,一旦有需要可被激活完成特定的任务。3.进程快照(通过命令获取进程信息)ps - 显示当前用户拥有控制终端的进程信息P
2022-03-11 14:37:58
1514
原创 <string.h>库函数
<string.h>中声明的函数是对标准C的一个重要补充,它们支持C语言把文本作为字符数组操作的传统。string.h是C语言中C标准库的头文件,其中包含了宏定义、常量以及函数和类型的声明,涉及的内容除了字符串处理之外,还包括大量的内存处理函数;因此,string.h这个命名是不恰当的。在string.h中定义的函数十分常用,作为C标准库的一部分,它们被强制要求可以在任何支持C语言的平台上运行。但是,部分函数存在一些安全隐患,例如缓存溢出等,导致程序员宁愿使用一些更安全的函数而放弃一定的可.
2022-03-11 13:48:02
7000
1
原创 七、文件系统
1.文件系统的物理结构1)硬盘的物理结构驱动臂、盘片、主轴、磁头、控制器2)磁表面存储器的读写原理硬盘片的表面覆盖着薄薄的磁性涂层,涂层中含有无数微小的磁性颗粒,谓之磁畴。相邻的若干磁畴组成一个磁性存储元,以其剩磁的极性表示二进制数字0和1。为磁头的写线圈中施加脉冲电流,可把一位二进制数组转换为磁性存储元的剩磁极性。利用磁电变换,通过磁头的读线圈,可将磁性存储元的剩磁极性转换为相应的电信号,表示二进制数。3)磁道和扇区磁盘旋转,磁头固定,每个磁头都会在盘片表面画出一个圆形轨迹。改变
2022-02-24 11:25:07
170
原创 六、系统调用
1.概念在计算机中,系统调用(英语:systemcall),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的接口)。操作系统中的状态分为管态(核心态)和目态(用户态)。大多数系统交互式操作需求在内核态执行。如设备IO操作或者进程间通信。特权指令:一类只能在核心态下运行而不能在用户态下运行的特殊指令。不同的操作系统特权指令会有所差异,但是一般来说主要是和硬件相关的一些指令。用户程序只在用户
2022-02-18 01:14:06
1483
原创 五、内存结构
1.虚拟内存、物理内存、半导体内存和换页文件虚拟内存:地址空间,虚拟的存储区域,应用程序所访问的都是虚拟内存。物理内存:存储空间,实际的存储区域,只有系统内核可以访问物理内存。物理内存包括半导体内存和换页文件(磁盘)两部分。虚拟内存和物理内存之间存在对应关系,当应用程序访问虚拟内存时,系统内核会依据这种对应关系找到与之相应的物理内存。上述对应关系存储在内核中的内存映射表中。当半导体内存不够用时,可以把一些长期闲置的代码和数据从半导体内存中缓存到换页文件中,这叫页面换出,一旦需要使用被换
2022-02-18 00:33:38
3696
原创 四、辅助工具、错误号和错误信息、环境变量
1.辅助工具nm xxx.o/xxx.out/xxx.a/xxx.so:查看符号表,列出目标文件(.o)、可执行文件、静态库文件(.a)或动态库文件(.so)中的符号(函数名、变量及其地址等)objdump -S xxx.o:显示二进制模块的反汇编信息strip xxx.o/xxx.out/xxx.a/xxx.so:删除目标文件(.o)、可执行文件、静态库文件(.a)或动态库文件(.so)中的符号表和调试信息(减小文件大小,调试完后发布时用)ldd xxx.out/xxx.so:查
2022-02-16 17:45:39
325
原创 三、库文件
单一模型:将程序中所有功能全部实现于一个单一的源文件内部。编译时间长,不易于维护和升级,不易于协作开发。分离模型:将程序中的不同功能模块划分到不同的源文件中。缩短编译时间,易于维护和升级,易于协作开发。1.静态库静态库的本质就是将多个目标文件打包成一个文件。链接静态库就是将库中被调用的代码复制到调用模块中。使用静态库的程序通常会占用较大的空间,库中代码一旦修改,所有使用该库的程序必须重新链接。使用静态库的程序在运行无需依赖库,其执行效率高。静态库的形式:libxxx.a构建静态库.
2022-02-16 15:00:15
217
原创 二、GNU编译器(gcc)
1.GCC的基本特点1)支持多种硬件架构 x86-64 Alpha ARM PowerPC SPARC VAX …2)支持多种操作系统 Unix 、Linux 、BSD 、Android 、Mac 、 iOS 、Windows3)支持多种编程语言 C 、C++ 、Objective-C、Java 、Fortran 、Pascal、 Ada4)终端命令行查看GCC的版本 :gcc -v2.构建过程源代码(.c)-预编译->头文件和宏扩展-编译->汇编码(.s)-汇编->目标
2022-02-16 13:53:28
1861
原创 一、UNIX发展过程
业务逻辑:根据业务需求,按照设计好的逻辑规则,处理信息,与系统无关。 系统访问:利用操作系统所提供的各种功能辅助业务逻辑的实现。标准函数:scanf/printf - 源代码级兼容 系统函数:read/write - 接口级兼容一、Unix系统简介1.Unix系统的背景1961-1969:史前时代 CTSS(Compatible Time-Sharing System,兼容分时系统),以MIT为首的开发小组,小而简单的实验室原型。 Multics(Multiplexed Information.
2022-02-16 13:16:24
1073
原创 双链表C语言实现
双链表C语言实现#include <stdio.h>#include <stdlib.h>/*声明描述节点信息的结构体*/typedef struct node { int data; //数据 struct node *next; //指向下一个节点 struct node *prev; //指向上一个节点}node_t;/*声明描述整个链表的结构体*/typedef struct list { struct node head;
2022-02-10 02:20:20
503
原创 循环队列C语言实现
循环队列C语言实现特性: 先进先出(First In First Out=FIFO),取数从队列的开头取,存储从队列尾部存。第一个元素又称首元素,最后一个元素又称尾元素。Linux系统三大队列:消息队列:进程间通信的一种手段。工作队列:延后执行的一种手段。等待队列:随时随地让进程休眠并且让进程随时随地被唤醒。/*循环队列*/#include <stdio.h>#include <stdlib.h>/*声明描述队列属性的结构体*/typedef struc
2022-02-08 17:38:30
513
原创 栈C语言实现
栈C语言实现#include <stdio.h>#include <stdlib.h> //为了用malloc函数/*声明描述栈属性信息的结构体*/typedef struct stack { int *arr; //数组的首地址 int cap; //栈的容量大小 int top; //栈顶}stack_t;/*定义栈相关的操作函数*///1.给栈分配内存,让arr指向分配的内存的首地址//并且把栈初始化为空栈(没有数据)void stac
2022-02-04 15:56:00
382
原创 单链表C语言实现
#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;}*List,Node;//头插法List headInsert(){ //申请头结点 Node *head = (Node*)malloc(sizeof(Node)); head->data = 0; head->next = NULL; int x = 0; //输入
2022-02-03 17:21:34
879
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人