自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Linux文件系统

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04数据块:首先寻找第一个可用的文件项。返回数据块地址和文件项索引大于 0 表示找到。首先定义几个重要的变量分别代表要寻找的文件的索引号和其所在的磁盘块号,总的文件数应该为 blocksize/每个文件的最大容量。int i;unsigned int index;unsigned int blockId;unsigned int fileItem;Inode fileInode;const

2021-12-26 21:05:15 500

原创 Linux文件系统

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04读取文件:下面是读取文件函数 readFile 的实现;在该函数中,文件名 name 作为形参传入。首先读取 inode :PInode pInode = new Inode();getInode(pInode, id);然后,依次遍历 10 个直接索引,读取数据块。这其中要分几种情况进行讨论。首先,如果文件的长度超过了 blocksize ,那么长度就要更新为原有的长度减去 getDat

2021-12-19 22:45:40 124

原创 Linux文件系统

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04结构体:在文件 FileSystem.h 中,声明了实现文件系统的一些重要数据结构:typedef struct{unsigned short blockSize;unsigned int blockNum;unsigned int inodeNum ;unsigned int blockFree;}SuperBlock;上述结构体中,我们定义了文件块大小 blockSize ,文件块数

2021-12-10 23:48:53 202

原创 Linux设备驱动

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04突然发现之前11.07日的博客没有发布成功,故再次发布。本次搜集了关于Linux设备驱动的理论知识,便于进行下次的代码分析。分类:计算机系统的主要硬件由CPU、存储器和外部设备组成。驱动程序的对象一般是存储器和外部设备。Linux将这些设备分为3大类,分别是字符设备、块设备、网络设备。字符设备:字符设备是指那些能一个字节一个字节读取数据的设备,如LED灯、键盘、鼠标等。字符设备一般需要在驱动层

2021-12-05 20:41:31 77

原创 Linux并行计算

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04读者写者问题:读者写者问题是非常经典的进程同步问题,下面分析代码中两种不同版本的读者写者问题,分别为写者优先和读者优先。写者优先:在读者优先中,如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。# include <stdio.h># include <stdlib.h># include <time.h># incl

2021-11-29 23:02:21 423

原创 Linux并行计算

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04多线程单词统计:本实验中,使用多线程实现统计文本单词的功能。在统计时,凡是一个非字母或数字的字符跟在字母或数字的后面,那么这个字母或数字就是单词的结尾 。允许线程使用互斥锁来修改临界资源,确保线程间的同步与协作。若两个线程需要安全地共享一个公共计数器,需要把公共计数器加锁。#include <stdio.h>#include <stdlib.h>#include <p

2021-11-29 01:05:58 870

原创 Linux时钟系统

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04闹钟实现:#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <signal.h> static void sig_alrm(int signo);int main(void){ signal(SIGALRM,sig_alrm); system("date")

2021-11-21 22:46:27 1096

原创 Linux设备驱动

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04字符设备驱动:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向流的设备,常见的字符设备如鼠标、键盘、串口、控制台、 LED。 在本实验中,我们实现一个简单的字符设备驱动实验, 并在设备的打开操作中打印主次设备号 。#include <linux/module.h>#include <linux/moduleparam.

2021-11-14 22:17:51 611

原创 Linux内存管理

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04动态分区分配:进程在运行的时候需要为其分配内存空间,但考虑到节约内存等因素的影响,我们需要适当的算法来对进程进行内存分配,这就是动态存储分配问题(dynamic storage-allocation problem)。当按照地址顺序在链表中存放进程和空闲区时,有几种算法可以用来为创建的进程(或从磁盘换入的已存在的进程)分配内存。在代码中,实现了首次适配(first fit)、下次适配(next fit)

2021-10-31 22:55:19 357

原创 Linux进程控制

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04进程控制:1. FIFO通信:从语义上来讲,FIFO 与管道类似,它们两者之间最大的差别在于FIFO 在文件系统中拥有一个名称,并且其打开方式与打开一个普通文件是一样的。这样就能够将FIFO 用于非相关进程之间的通信(如客户端和服务器)。——《The Linux Programming Interface》在这一部分中,代码使用了FIFO来进行进程通信,并且以此关联客户和服务器。用一个服

2021-10-24 23:22:26 174

原创 Linux进程控制

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04进程控制:1. 进程共享内存通信:首先讨论的是Linux中的System V共享内存IPC。与管道或消息队列要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种IPC 技术的速度更快。下面是一个基于共享内存的读写程序。// shmread.c#include <unistd.h>#include <stdlib.h

2021-10-17 21:36:13 107

原创 Linux进程控制

2021SC@SDUSC项目环境:树莓派4b Ubuntu Desktop 21.04进程控制:1. 创建进程:在Linux 系统中,父进程通过调用fork函数创建一个新的运行的子进程。#include <sys/types.h>#include <unistd.h>pid_t fork(void);关于fork函数,有如下特性:子进程得到与父进程用户级虚拟地址空间相同的(但是独立的)一份副本,包括代码和数据段、堆、共享库以及用户栈。子进程还

2021-10-10 23:19:11 74

原创 树莓派提升计划项目综述

2021SC@SDUSC我们组的项目是树莓派提升计划,我主要负责其中有关于树莓派的linux操作系统相关方面的代码。首先需要进行项目环境的搭建。项目环境:树莓派4b Ubuntu Desktop 21.04 远程连接: xshell win10 juiceSSH android 烧录系统:依据网络相关教程,使用SDFormatter,Win32DiskImager将SD卡格式化,并写入Ubuntu Desktop 21.04系统。使用Ubuntu Des...

2021-09-30 23:23:18 91

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除