
Linux
_长风_
热爱应是星火,点燃了寂夜,路才更辽阔。
展开
-
Bash 脚本执行权限问题
Bash 脚本执行权限问题原创 2024-11-04 11:22:32 · 1909 阅读 · 0 评论 -
Ubuntu执行sudo apt-get update报错E: Failed to fetch https://mirrors.aliyun.com/docker-ce/linux/ubuntu/di
【代码】Ubuntu执行sudo apt-get update报错E: Failed to fetch https://mirrors.aliyun.com/docker-ce/linux/ubuntu/di。原创 2023-11-13 18:45:31 · 3803 阅读 · 0 评论 -
Ubuntu执行sudo apt-get update报错W: An error occurred during the signature verification. The repository
【代码】Ubuntu执行sudo apt-get update报错W: An error occurred during the signature verification. The repository。原创 2023-11-13 18:38:38 · 2974 阅读 · 0 评论 -
将文件夹的权限从root变更为当前用户
将文件夹的权限从root变更为当前用户进入终端,切入root用户sudo su>>输入密码使用chown -R username filepath命令修改文件夹权限chown -R wsq /home/wsq/test查看文件夹–右键–属性–权限...原创 2022-02-10 11:26:33 · 7095 阅读 · 0 评论 -
Ubuntu下libusb的安装
libusb的安装一、下载点击进入->下载地址选择保存,默认在下载文件夹里。二、解压解压到当前文件夹tar -jxvf libusb-1.0.24.tar.bz2进入到当前文件夹,以便配置tar -jxvf libusb-1.0.24.tar.bz2三、配置与安装配置之前,需要先安装libudev。sudo apt-get install libudev-dev执行配置指令sudo ./configure遇到报错,根据提示重新执行。s原创 2022-01-26 11:12:20 · 8276 阅读 · 0 评论 -
Linux下shell脚本---判断是否存在文件夹并创建
Linux下shell脚本—判断是否存在文件夹并创建新建shell文件新建文件,并命名为*.sh,任意后缀为.sh的文件。touch test.sh书写test.sh#!/bin/bash# 查找根目录下的output下是否存在canbus文件夹if [ ! -d "./output/canbus/" ];then # 如果不存在在根目录下的output下新建canbus文件夹 mkdir ./output/canbuselse echo "文件夹已经存在"原创 2022-04-18 15:12:21 · 2069 阅读 · 0 评论 -
Linux系统之间互相传输文件
Linux系统之间互相传输文件安装sudo apt-get updatesudo apt-get install openssh-serverStep1:LinuxA1 获取主机名whoami>>wsq2 设置文件夹可读可写权限sudo chmod 777 /home/ab/1233 获取iphostname -I>>192.168.242.1284 设置文件夹可读可写权限sudo chmod 777 /home/<username>/原创 2022-01-25 20:10:40 · 1103 阅读 · 0 评论 -
Windows10和Ubuntu18.4搭建局域网内共享文件夹(Samba)
Windows10和Ubuntu18.4搭建局域网内共享文件夹一、Ubuntu18.4安装Samba并设置共享文件夹1 Samba安装sudo apt-get upgrade sudo apt-get update sudo apt-get install samba2 创建分享文件夹 share<username>—指的是Ubuntu的用户名mkdir /home/<username>/share3 修个smb.conf配置文件sudo vi /etc原创 2022-01-21 16:12:34 · 1096 阅读 · 0 评论 -
读者写者模型的理解
读者写者模型的理解什么是读者写者模型读者和写者模型是操作系统中的一种同步与互斥机制,它与消费者和生产者模型类似,但也有不同的地方,最明显的一个特点是在读者写者模型中,多个多者之间可以共享“仓库”,读者与读者之间采用了并行机制;而在消费者和生产者模型中,消费者只能有一个独占仓库,消费者与消费者是竞争关系。读者写者模型的要具有的条件写者是排它性的,即在有多个写者的情况下,只能有...原创 2018-09-08 09:38:41 · 374 阅读 · 0 评论 -
读者写者模型和生产者消费者模型区别
读者写者模型和生产者消费者模型区别(面试题)从两个模型的原理中可以看出,两个模型最大的区别在于在生产者消费者模型中,生产者与生产者是互斥关系,消费者和消费者是互斥关系,生产者和消费者之间是互斥与同步关系;而在读者写者模型中,读者和读者没有关系,写者和写者是互斥关系,读者和写者是互斥与同步关系。...原创 2018-09-08 09:40:27 · 2183 阅读 · 0 评论 -
互斥量,条件变量,信号量,读写锁,自旋锁
互斥量,条件变量,信号量,读写锁,自旋锁互斥锁–保护了一个临界区,在这个临界区中,一次最多只能进入一个线程。如果有多个进程在同一个临界区内活动,就有可能产生竞态条件(race condition)导致错误,其中包含递归锁和非递归锁,(递归锁:同一个线程可以多次获得该锁,别的线程必须等该线程释放所有次数的锁才可以获得)。读写锁–从广义的逻辑上讲,也可以认为是一种共享版的互斥锁。可以多个线程同...原创 2018-09-08 09:41:04 · 338 阅读 · 0 评论 -
守护进程
守护进程概念理解守护进程是一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独立于控制终端并且周期性地执行 某种任务或等待处理某些发生的事件。守护进程是⼀种很有用的进程。Linux的⼤多数服务器就是⽤用守护进程实现的。...原创 2018-09-08 09:41:43 · 175 阅读 · 0 评论 -
理解文件系统中inode的概念
理解文件系统中inode的概念概念:inode就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等inode 是 UNIX 操作系统中的一种数据结构,其本质是结构体在 Linux 中,索引节点结构存在于系统内存及磁盘,其可区分成 VFS inode 与实际文件系统的 inode。VFS inode 作为实际文件系统中 inode 的抽象,定义了结构体 inode...原创 2018-09-08 09:45:19 · 1402 阅读 · 0 评论 -
进程打开文件的本质以及文件描述符的本质
进程打开文件的本质当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件。于是就有了file结构体。表⽰⼀个已经打开的文件对象。而进程执行open系统调⽤,所以必须让进程和文件关联起来。每个进程都有⼀个指针*files, 指向⼀张表files_struct,该表最重要的部分就是包涵一个指针数组,每个元素都是一个指向打开文件的指针!所以,本质上,文件描述符就是该数组的下标。所以,只...原创 2018-09-08 09:48:43 · 2166 阅读 · 0 评论 -
文件描述符与C FILE*的关系,理解系统调用与库函数(面试题)
文件描述符与C FILE*的关系,理解系统调用与库函数每个进程都有⼀个指针*files, 指向⼀张表files_struct,该表最重要的部分就是包涵一个指针数组,每个元素都是一个指向打开文件的指针,文件描述符就是该数组的下标。系统调用与库函数 可以认为,f#系列的函数(库函数),都是对系统调⽤的封装,方便⼆次开发。...原创 2018-09-08 09:59:20 · 269 阅读 · 0 评论 -
站在系统角度,常见的文件操作接口的使用
站在系统角度,常见的文件操作接口的使用open系统调用执行的操作:新建一个i节点表元素,让其对应打开的物理文件(如果对应于该物理文件的i节点元素已经建立,就不做任何操作);新建一个文件表的元素,根据open的第2个参数设置file status flags字段,将current file offset字段置0,将v-node ptr指向刚建立的i节点表元素;在文件描述符表中,寻找1个尚未使用的...原创 2018-09-08 10:01:20 · 223 阅读 · 0 评论 -
文件描述符重定向的操作
文件描述符重定向的操作1.linux用文件描述符来标识每个文件对象,文件描述符是一个非负整数,可以唯一地标识会话中打开的文件,每个过程一次最多可以有9个文件描述符;2.0=>STDIN=>标准输入;1=>STDOUT=>标准输出;2=>STDERR=>标准错误;3.STDIN:STDIN文件描述符代表shell的标准输入,对终端界面来说,标准输入是键...原创 2018-09-08 10:02:11 · 302 阅读 · 0 评论 -
生产者消费者模型的理解
生产者消费者模型的理解生产者消费者模型也叫缓存绑定问题,是一个经典的、多进程同步问题。单生产者和单消费者有两个进程:一组生产者进程和一组消费者进程共享一个初始为空、固定大小为的缓冲区。生产者:生产者的工作是制造一段数据,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待,如此反复;消费者:只有缓冲区不空时,消费者才能从缓冲区中取出消息,一次消费一段数据(即将其从缓存...原创 2018-09-08 09:37:56 · 404 阅读 · 0 评论 -
死锁面试题(什么是死锁,产生死锁的原因及必要条件)
什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。产生死锁的原因?可归结为如下两点:a. 竞争资源系统中的资源可以分为两类: 1. 可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU和主存均属于可剥夺性资源; 2. 另一...原创 2018-08-30 11:36:30 · 14109 阅读 · 0 评论 -
进程和程序有什么区别(面试题)
进程和程序有什么区别进程是程序的一次执行过程,是动态概念,程序是一组有序的指令集和,是静态概念进程是暂时的,是程序在数据集上的一次执行,可创建可撤销,程序是永存的进程具有并发行,程序没有进程是竞争计算机资源的最小单位,程序不是进程与程序不是一一对应,多个进程可执行一个程序,一个程序可执行多个程序...原创 2018-08-27 10:17:50 · 3931 阅读 · 0 评论 -
进程创建(以及fork和vfork的区别)
进程创建fork函数#include<unistd.h>pid_t fork(void)返回值:自进程返回0,父进程返回子进程ID,出错返回-1。进程调用fork函数时,当控制转移到内核中fork代码后,内核做的事情有:分配新的数据块和数据结构给子进程将父进程的数据结构的部分内容拷贝到子进程中将子进程添加到系统进程列表fork返回。开始调度器调度fo...原创 2018-08-27 10:20:02 · 319 阅读 · 0 评论 -
进程等待
进程等待为什么要等待? 1.子进程退出,如果父进程不管不顾,可能造成僵尸问题,造成内存泄漏 2.一旦变成僵尸状态,kill -9都无能为力,因为没有谁可以杀死一个死去了的进程 3.父进程需要知道子进程完成任务的情况(对错与否,有没有异常退出等) 4.父进程需要通过进程等待的方式回收子进程的资源,获取退出信息怎么等待?(两个接口函数) wait...原创 2018-08-27 10:21:19 · 264 阅读 · 0 评论 -
进程程序替换
进程程序替换替换原理 fork创建子进程执行的是和父进程相同的程序(也有可能是某个分支),通常fork出的子进程是为了完成父进程所分配的任务,所以子进程通常会调用一种exec函数(六种中的任何一种)来执行另一个任务。当进程调用exec函数时,当前用户空间的代码和数据会被新程序所替换,该进程就会从新程序的启动历程开始执行。在这个过程中没有创建新进程,所以调用exec并没有改变进程的id。替...原创 2018-08-27 10:24:17 · 330 阅读 · 0 评论 -
进程终止
进程终止终止方式1.正常终止,结果正确2.正常终止,结果错误3.异常终止终止方法1.正常终止(可以通过echo $?查看进程退出码)调用_exit函数#include <unistd.h>void _exit(int status)参数:status定义了进程终止状态,父进程通过wait来获取注意:虽然status是int,但只有低八位可以被...原创 2018-08-27 10:25:46 · 412 阅读 · 0 评论 -
进程地址空间(分段/分页)
进程地址空间对于一个进程空间分布图如下: 引子:猜猜下面输出结果,为什么呢?#include &lt;stdio.h&gt;#include &lt;unistd.h&gt;#include &lt;stdlib.h&gt;int g_val = 0;int main() { pid_t id = fork(); if(id &lt; 0){原创 2018-08-27 12:58:17 · 7562 阅读 · 5 评论 -
进程间通信
进程间通信进程间通信为什么要通信(重点)怎么通信(主要三种方式),通信本质(重点)管道(Unix中最古老的进程间通信的方式)系统IPC(System V IPC资源生命周期随内核)套接字(socket)一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并能够相互传递交换信息为什么要通信(重点)数据传输:一个进程需要将...原创 2018-08-27 13:01:27 · 152 阅读 · 0 评论 -
什么叫做互斥与同步,为什么要引入互斥与同步机制(面试题)
什么叫做互斥与同步,为什么要引入互斥与同步机制互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。同步:是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后...原创 2018-08-28 09:37:19 · 2144 阅读 · 0 评论 -
进程与线程的区别(面试题)
进程与线程的区别进程是资源分配最小单位,线程是程序执行的最小单位;进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段,线程没有独立的地址空间,它使用相同的地址空间共享数据;CPU切换一个线程比切换进程花费小;创建一个线程比进程开销小;线程占用的资源要⽐进程少很多。线程之间通信更方便,同一个进程下,线程共享全局变量,静态变量等数...原创 2018-08-28 20:46:55 · 46002 阅读 · 8 评论 -
浅谈线程基本概念
浅谈线程基本概念站在操作系统管理角度,理解什么是线程线程是不拥有独立资源空间的程序执行流的最小单位站在进程地址空间角度,理解什么是线程线程是进程中的实体,是进程内部的控制序列,和该进程内的其他线程共享地址空间和资源站在执行流角度,理解什么是线程线程是程序中一个单一的顺序控制流程,是程序执行流的最小单位如何理解线程是进程内部的一个执行分支原因60年代...原创 2018-08-28 20:50:58 · 317 阅读 · 0 评论 -
线程控制
线程控制(Linux下,pthread库如何控制线程)简单来说是通过pthread簇函数来控制,常见的必不可少的就是创建和终止,具体如下:创建线程(pthread_create)#include &lt;pthread.h&gt;int pthread_create(pthread_t *restrict thread,/ const pt...原创 2018-08-29 10:36:47 · 160 阅读 · 0 评论 -
线程分离
线程分离什么是线程分离(WHAT)简单来讲,线程分离就是当线程被设置为分离状态后,线程结束时,它的资源会被系统自动的回收,而不再需要在其它线程中对其进行 pthread_join() 操作。为什么线程分离(WHY)在我们使用默认属性创建一个线程的时候,线程是 joinable 的。 joinable 状态的线程,必须在另一个线程中使用 pthread_join() 等待其结束,如果...原创 2018-08-29 11:44:50 · 6525 阅读 · 0 评论 -
临界区,临界资源,原子性(面试题)
什么叫做临界区,临界资源,原子性临界资源:临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。临界区:每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他...原创 2018-08-29 11:46:26 · 2613 阅读 · 0 评论 -
避免死锁
死锁概念基本概念-&gt;翻我牌子来看如何避免死锁三种用于避免死锁的技术:加锁顺序(线程按照一定的顺序加锁)再多线程中,如果一个线程需要锁,那么他就必须要按照一定顺序获得锁thread alock 1lock 2thread b 等待 1//等待线程a中1加锁后才能对3上锁 lock 3(1已经被上锁)thread c ...原创 2018-09-01 10:18:36 · 206 阅读 · 0 评论 -
理解静态库与动态库(浅谈静态动态库的区别)
理解静态库与动态库静态库概念静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库特点可执行文件中包含了库代码的一份完整拷贝静态库的代码是在编译过程中被载入程序中缺点就是被多次使用就会有多份冗余拷贝动态库(动态链接库)概念动态链接提供了一种方...原创 2018-09-01 11:14:24 · 2403 阅读 · 0 评论 -
线程等待(为什么要线程等待,如何等待)
线程等待为什么需要线程等待(WHY)?已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。创建新的线程不会复⽤刚才退出线程的地址空间 如何等待(HOW)?功能:等待线程结束 原型#include <pthread.h>int pthread_join(pthread_t thread, void **value_ptr);参数 thread:线程I...原创 2018-08-30 09:03:44 · 5255 阅读 · 0 评论 -
浅谈操作系统
浅谈操作系统浅谈操作系统站在冯诺依曼角度,理解操作系统定位站在管理角度,理解操作系统[先描述再组织]站在应用者的角度,理解操作系统站在操作系统角度,理解系统调用接口站在操作系统角度,理解操作系统外壳程序定位与作用(Linux shell)对比系统调用,理解库函数站在冯诺依曼角度,理解操作系统定位管理和控制计算机硬件与软件资源的计算机程序 冯诺伊曼...原创 2018-08-19 09:19:32 · 506 阅读 · 0 评论