linux 操作系统
文章平均质量分 60
记录读书过程
China_JerryYuan
这个作者很懒,什么都没留下…
展开
-
linux 进程上下文
进程原创 2022-07-31 12:09:54 · 471 阅读 · 1 评论 -
linux硬件基础
linux 硬件基础原创 2022-07-31 00:43:55 · 269 阅读 · 0 评论 -
makefile——library
管理程序库创建及更新程序库程序库作为必要条件原创 2022-05-16 22:12:43 · 308 阅读 · 0 评论 -
makefile——杂项
1.phony target2.empty target3.VPATH & vpath原创 2022-05-16 22:08:57 · 112 阅读 · 0 评论 -
makefile——rule概览
1.makefile 的组成及作用makefile由一组rule(规则)组成,规则的语法如下:obj1 obj2 objN: prerequisite1 prerequisite2 prerequisite3 prerequisiteN(tab) commands一个规则由三部分组成obj 即目标部分。必要条件部分(或者说依赖,即生成目标文件的依赖文件)。commands 从必要条件生成obj 需要执行的 命令。这一组规则会生成一个叫dependency graph 的东西,可以翻译成原创 2022-05-16 22:02:38 · 691 阅读 · 0 评论 -
linux 进程间通信(一)、经典通信方式(管道、FIFO、信号)
1.常用的进程间通信方式介绍1.1 linux支持的经典的进程间通信无名管道有名管道(FIFO)信号1.2 system V 进程间通信由贝尔实验室研发的进程间通信方式。其特点为只能在本机的进程之间进行通信。1.3 网络IPC socket由加州伯克利分校研发的进程间通信方式。其特点为既可以进行本机的进程间通信,又可以跨越机器,进行不同pc机的进程间通信。2. 管道2.1 ...原创 2021-09-05 21:33:26 · 512 阅读 · 0 评论 -
(二)计算机体系结构
第一部分 IO基础知识计算机系统软件体系结构采用一种层的结构,有人说过一句名言:“Any problem in computer science can be solved by anther layer of indirection.”“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决”0.计算机的体系结构图1.操作系统概念...原创 2021-09-05 21:33:08 · 161 阅读 · 0 评论 -
(三)文件操作之一——文件IO
IO课程--文件操作 文件操作部分中分为文件IO和标准IO,文件IO底层应用较多,标准IO上层应用叫做。-文件IO中需要学习的函数: open()/creat()、close()、read()、write()、lseek()(定位文件)1、文件描述符 (1)概念:文件描述符是文件IO 的操作对象。普通用户识别一个文件是通过路径和文件名,而内核...原创 2021-09-05 21:32:44 · 91 阅读 · 0 评论 -
杂项之《unix 高级环境编程》中的概念理解
1、目录目录是一个包含目录项的文件。2、目录项逻辑上,可以认为每个目录项包含一个文件名,同时包含该文件的属性信息。3、文件属性文件属性是指文件的类型文件的大小文件的所有者文件的权限(其他用户是否可以访问)文件的最后修改时间注意:stat 和 fstat函数返回一个文件属性的 结构(这个结构的作用是描述文件的信息。)目录项逻辑上与实际磁盘存储是不同的。大多数的unix文...原创 2021-09-04 23:41:36 · 113 阅读 · 0 评论 -
Linux下静态库与动态库简单制作与使用
前言在实际的开发过程中,编写程序往往都需要依赖很多基础的底层库,比方说平时用的较多的标准C库,数学库等等;我们会频繁的使用这些库里的函数,这些函数大多数都是前人为我们写好的,所以值得庆幸的是我们的工作不必从零开始,我们要做的只是在恰当的位置调用合适的库函数去实现相应的功能,充分利用前人的劳动成果,就是“站在巨人的肩膀上”。本文主要简述Linux下库的制作以及使用方法。1. 什么是库?库从本质...原创 2020-04-02 17:23:29 · 182 阅读 · 0 评论 -
gcc 与g++
1.什么是gcc / g++首先说明:gcc 和 GCC 是两个不同的东西GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。gcc是GCC中的GUN C Compiler(C 编译器)g++是GCC中的GUN C++ Compiler(C++编译器)一个有趣的事实就是,...转载 2020-04-06 23:41:22 · 208 阅读 · 0 评论 -
ubuntu 12.4 设置tab键空格数
vim默认按tab键的缩进空格数为8格,而我们写程序时一般习惯4格缩进,下面方法可以修改vim中tab键缩进空格的数目。步骤如下:1.打开/etc/vim 下的vimrc文件2.在此文件的最后添加如下代码:set tabstop=4 //设置一个tab显示多少空格set softtabstop=4 //设置回格键退回缩进长度set shiftwidth=4...原创 2019-03-31 11:48:57 · 715 阅读 · 0 评论 -
dpkg 、apt
1. apt简介Advanced Package Tool,即APT。是一款适用于Unix和Linux系统的应用程序管理器。是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似。 最初于1998年发布,用于检索应用程序并将其加载到Debian Linux系统。APT成名的原因之一在于其出色的解决软件依赖关系的能力。APT的命令行工具:apt-get apt等。2. a...原创 2020-04-18 00:05:51 · 129 阅读 · 0 评论 -
命令总结
1. 查看路由表route -n目标(destination):代表的是目标网段。网关(gateway):需要经过的网关子网掩码(Genmask)标志位(flags): 当标志位带有G(即Gateway) 时才能作为 网关转发使用。没有G标志的话,代表是本地的(子网内的),直接通过网卡接口(Iface),不需要通过网关向外发送。越点(mertic)2. 添加路由route ...原创 2020-04-20 11:05:51 · 140 阅读 · 0 评论 -
ubuntu 下常用的命令(仅做记录)
1. vim 编辑器的常用命令1.1 光标移动命令gg :将光标移动到文件首。(敲代码时,添加头文件时使用)`: 将光标移动到上次编辑处(添加完头文件,回到编辑处)n G:将光标跳转到第n行 (修改BUG时使用)G: 将光标移动到文件尾n j :n代表代表移动行数,光标向下移动n行。 例如: 20 j 代表光标向下移动20行。0 (数字0): 将光标移动到行首$ : ...原创 2020-03-22 17:45:00 · 710 阅读 · 1 评论 -
协议分层
个人对于5层协议分工的理解:1、应用层将原始的数据,加上应用层的协议。称为报文。2、运输层确定应用层报文之间的运输特性。可靠还是不可靠。运输层通过运输层协议实现。将报文加上运输层的协议后,称之为报文段。3、网络层通过协议,确定报文段的目的地址。将报文段加上网络层协议后,称之为数据报。也决定数据移动的路径(路由选择协议)。4、链路层网络层确定地址后,需要依靠链路层决定...原创 2020-03-10 10:48:38 · 129 阅读 · 0 评论 -
linux 之文网络编程基础 (一)、网络编程基本概念
1. 计算机网络基础1.1 计算机网络的要求1958年,出于军事考虑, 美国国会成立ARPA,目的是造出计算机网络,要求是:1.2 分组交换在各种网络应用中,端系统彼此交换报文( message) 。 报文能够包含协议设计者需要的任何东西 。 报文可以执行一种控制功能(例如,图 1-2 所示例子中的"你好"报文) ,也可以包含数据,例如电子邮件数据、 JPEG 匮|像或 MP3音频文...原创 2020-04-02 23:08:57 · 245 阅读 · 0 评论 -
为什么要划分子网?
为什么我们要划分子网?(1)减少网络流量。子网定义了一个网络最大的广播空间(受限广播),可以减少网络流量(2)提高网络性能。如果不划分子网,那么我们的网络将是一个巨大的、扁平的网络空间,这将导致网络性能下降。(寻址变慢了)(3)便于网络管理。分层次的网络可以更加方便网络管理员对于网络的管理,就类似于学校要分年级,年级要分班。子网掩码可以将地址分成两部分:网络部分,主机部分。受限广播地址: 不会被路由,只能在本网络内传播。直接广播地址: 会被路由,将会在整个网络域内传播。IPv6 不再使用广播概原创 2020-11-14 17:19:39 · 14372 阅读 · 0 评论 -
netcat 网络瑞士军刀
1. 创建服务端和客户端1.1 创建一个服务器端nc -l -p port-l: Listen mode, for inbound connects. #即监听模式,监听入站的链接-p: 后面接port, 即监听的端口号1.2 创建一个客户端nc [remote address] [remote port] # 连接远端服务器的地址,连接的端口号1.3 演示背景解释...原创 2020-04-29 23:31:37 · 143 阅读 · 0 评论 -
Unix域套接字简介
1. unix 套接字简介在Linux系统中,有很多进程间通信方式,套接字(Socket)就是其中的一种。但传统的套接字的用法都是基于TCP/IP协议栈的,需要指定IP地址。如果不同主机上的两个进程进行通信,当然这样做没什么问题。但是,如果只需要在一台机器上的两个不同进程间通信,还要用到IP地址就有点大材小用了。其实很多人并不一定知道,对于套接字来说,还存在一种叫做Unix域套接字的类别,专...转载 2020-04-06 15:33:48 · 497 阅读 · 0 评论 -
单任务 c/s模式下 TCP、UDP通信的一般流程
1. c/s 模式 下UDP通信2. c/s 模式 下TCP通信原创 2020-03-17 08:43:39 · 510 阅读 · 0 评论 -
常用API 的一般使用方法、常用的数据结构(持续更新)
1、recvform(1)函数原型:ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);(2)参数:sockfd:套接字文件描述符buf: 接受的数据存储的位置(缓冲区)len:缓冲区的长度flags:0src_a...原创 2020-03-13 22:30:32 · 667 阅读 · 0 评论 -
linux 之文网络编程基础 (二)、大小端、地址地址转换函数
1、tcp、udp特点(1)TCP 电话系统服务模式的抽象。(面向连接、可靠)面向连接 需要3次握手。(2)UDP邮件系统服务的抽象。(面向无连接的)经过的路由器多,丢包率高。认为让它可靠。(添加应用层协议。)2、大小端2.1 不同的电脑大小端不同,就会造成问题。主机字节序(大小端都有)网络字节序(都是大端)注意:服务器一般是大端的(因为网络字节序是大端的,服务...原创 2020-04-02 23:57:20 · 208 阅读 · 0 评论 -
netfilter_queue
int nfq_set_verdict(struct nfq_q_handle *qh, uint32_t id, uint32_t verdict, uint32_t data_len, const unsigned char *buf)函数功能:对一个数据包发表裁决。函数参数:qh:id:verdict:data_len:buf:包含数据包数据的缓冲...原创 2020-04-14 22:12:11 · 1486 阅读 · 0 评论 -
linux 之线程基础 (一)、 线程的基本概念
1. 线程基本概念1.1 为什么需要引入线程?现代操作系统OS引入了多任务的概念,传统上多任务的实现是多进程完成的。支持多任务就涉及到进程的切换,也就意味着进程上下文的切换。如果我们进程有很多,多进程的频繁切换,每次上下文切换都要做这些事,还是很耗资源的,我们想用一种机制能减少进程切换带来的资源消耗,所以很多操作系统中都引入了轻量级的进程的概念。也称之为线程。注意:上下文切换,上下文的意思...原创 2020-03-26 22:43:58 · 136 阅读 · 0 评论 -
Ice 线程与并发 C++
1. Thread 类1.1 概述Ice中的基础线程是由ThreadControl类和Thread类来提供的(在IceUtil/IceUtil.h中定义):Thread类是一个抽象基类,拥有一个纯虚方法run。要创建线程,必须特化Thread类,并实现run方法。1.2 其成员函数1)id:该函数返回每个线程的唯一标识符,类型是ThreadID。在调用start函数之前调用它时,会引发T...原创 2020-03-31 19:33:15 · 300 阅读 · 0 评论 -
linux 之线程基础 (二)、 线程相关API
2. 线程相关API2.1 线程ID 的数据类型2.1.1 进程ID的数据类型进程ID的数据类型为 pid_t进程在系统中唯一的标识。获取进程ID的函数为:getpid()。2.1.2 线程ID的数据类型线程ID的数据类型为 pthread_t 线程ID代表 线程所属进程中,线程的唯一标识。它只在所属进程有获取线程ID的函数 pthread_self();注意:线程ID...原创 2020-03-28 16:39:00 · 198 阅读 · 0 评论 -
linux多线程编程
前言是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为13) 在主线称中启动线程2,打印“this is thread2”,并将g_Flag设置为24) 线程序1需要在线程2退出后才能退出5) 主线程在检测到g_Flag从1变...转载 2020-02-29 22:27:09 · 213 阅读 · 0 评论 -
linux 之线程基础 (三)、多线程编程的同步和互斥
linux 之线程基础 (三) 多线程编程的同步和互斥线程机制的优点:线程间很容易进行通信,通过全局变量实现数据共享和交换。线程机制缺点:多个线程同时访问共享对象时需要引入同步和互斥机制。1. 同步与互斥的基本概念1.1 同步在多任务的操作系统环境下,多个进程/线程会同时运行。多个任务可能为了完成同一个目标会相互协作,按一定规则有序运行,这样就形成了任务之间的同步关系。同步概念:是...原创 2020-03-28 18:15:27 · 630 阅读 · 0 评论 -
linux进程间通信——共享内存、信号量、消息队列
1、system v IPC对象简介1.1 system v IPC对象有哪些?IPC对象用来干什么?system v 的IPC对象有共享内存、信号量、消息队列。在linux下可以使用IPC对象进程进程间通信。IPC对象存在于内核中,作为桥梁供多进程操作进行数据通信。注意:IPC对象的作用范围是整个系统内,因此创建IPC对象当不再使用他们时应该将他们删除,否则他们会驻留在内核里。为此,系统提...原创 2020-03-05 23:27:13 · 670 阅读 · 0 评论 -
linux 信号机制介绍
1、信号概述(1) 信号是什么?信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。软件层次对于中断机制的模拟说中断,一般针对的是cpu。就是说cpu正在处理一个进程,通过发送中断请求,可以让cpu先暂时停止手中的活儿,来处理更紧急的事情。而说信号是对中断的模拟是指,正在运行的程序,被发来的信号打断,取执行别的更紧急的事情。因此,信号操作的(针对的)对象是进程。异步通信方式异...原创 2020-03-05 15:19:29 · 388 阅读 · 0 评论 -
linux信号(signal) 机制分析
1 信号本质软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件...转载 2020-03-04 23:28:02 · 306 阅读 · 0 评论 -
linux 之进程基础 (五)、进程API之进程终止API
5 . 进程终止API5.1 exit()函数和_exit()函数exit()和_exit()函数都是用来终止进程的。当程序执行exit()和_exit()时,进程会无条件的停止剩下的所有操作。清除各种数据结构,并终止本进程的运行。但是这个两个函数运行还是有点区别的。5.2 exit()函数和_exit()函数 的区别5.2.1exit()函数和_exit()函数 的区别 示意图_...原创 2020-03-25 21:04:30 · 463 阅读 · 0 评论 -
linux 之进程基础 (一)、 进程的基本概念
1.进程中的基本概念1.1 什么是进程?可以认为进程是一个程序的一次执行过程,或者说一个正在执行的程序。在这个过程中,伴随着资源的分配和释放。进程是资源管理的最小单元。1.2 进程与程序的区别与联系?程序是存放在硬盘中的二进制文件(可执行指令的序列),是静态的。而进程是已经加载到主存中,正在执行的程序。它是程序执行的过程,包括创建、调度和消亡。在这个过程中,伴随着资源的分配和释放,是动态的...原创 2020-03-24 22:26:10 · 1019 阅读 · 0 评论 -
linux 中的前台进程和后台进程
独立于终端的进程一定后台进程。(不需要交互)但是,与终端相关的进程,也有可能是后台进程。例如,打开终端,写一个每隔1分钟打印一个hello world的进程,重命名为hello 。 当执行: ./hello 的话,这就是一个前台进程,只有终止这个进程,shell才能干别的事。而执行:./hello & 的话,这个程序就是一个后台进程,你可以在hello 执行期间去做别的事。 这个...原创 2020-03-02 22:29:31 · 1016 阅读 · 0 评论 -
linux下进程管理
1、linux下启动进程的两种方式:(1)方式一手动启动:即用户输入命令直接启动。 分为前台运行和后台运行。(2)方式二调度启动:即系统根据事先的设定自行启动进程。at命令:在指定时刻运行某一个进程。cron命令:周期性的执行相关进程。2、at命令 启动进程(1)at命令功能简介在指定的时刻执行相关的进程。(2)使用at命令需要具备的条件需要开启atd服务。检查atd...原创 2020-03-01 23:04:18 · 499 阅读 · 0 评论 -
linux 之进程基础 (六)、进程API之进程资源回收函数
6. 进程API之进程资源回收函数6.1 wait函数和waitpid函数 简介6.1.1 wait函数调用该函数使进程阻塞,直到任一个子进程结束或者是该进程接收到了一个信号为止。如果该进程没有子进程或者其子进程已经结束,wait函数会立即返回。此时父进程属于可中断状态6.1.2waitpid函数功能和wait函数类似。可以指定等待某个子进程结束以及等待的方式(阻塞或非阻塞)。事实上w...原创 2020-03-25 21:23:20 · 143 阅读 · 0 评论 -
linux 之进程基础 (七)、守护进程、进程组等概念
7. 守护进程、进程组等概念7.1 守护进程特点运行方式守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是用守护进程实现的。比如:像我们的tftp,samba,nfs等相关服务。同时Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务...原创 2020-03-26 11:14:54 · 491 阅读 · 0 评论 -
linux 之进程基础 (四)、进程API之进程执行exec函数簇
4. 进程API之创建执行exec函数簇4.1 exec()函数簇说明可执行文件查找方式:带p:对文件查找方式为p的(以p结尾的函数)可以只给出文件名,系统会自动从环境变量“$PATH”所包含的路径中进行查找。不带p:需要提供完整的路径名。向新程序传递环境表的方式:带e:接受一个附加的环境参数列表,参数格式为NULL结尾的字符串数组,且字符串的格式为“VARIABLE=value...原创 2020-03-25 20:15:06 · 315 阅读 · 0 评论 -
linux进程——fork()函数
1、fork()函数简介(1)函数原型#include <sys/types.h>#include<unistd.h>pit_t fork(void)(2)功能fork用于在已存在的进程中创建一个新的进程。创建的新进程我们称之为子进程,原进程我们称为父进程。(3)返回类型及返回值fork()函数的返回类型为 pid_t 类型,这时基本系统数据类型...原创 2020-03-02 16:30:00 · 252 阅读 · 0 评论