首页 > 其他分享 >第一、二章学习笔记

第一、二章学习笔记

时间:2023-09-10 12:22:38浏览次数:29  
标签:文件 二章 文件系统 笔记 学习 Unix 线程 Linux 进程

Unix/Linux系统编程学习笔记第一章、第二章

知识点归纳以及最有收获的内容

  • 一. 进程与线程
    Unix/Linux系统中,进程是程序的执行实例,而线程是进程内的执行单元。进程之间通常是独立的,而线程共享进程的资源。最大的收获是理解了进程与线程之间的区别,以及它们如何协同工作。
    进程(Process)
  • 1.什么是进程:
    进程是一个正在运行的程序的实例。每个进程都有自己的内存空间,包括代码、数据和系统资源的副本。它们是操作系统中最基本的执行单元之一。
  • 2.特点:
    进程是独立的,它们之间不共享内存空间。
    进程之间通常通过进程间通信(IPC)机制来进行通信,如管道、消息队列、共享内存等。
    进程具有自己的独立地址空间,这意味着一个进程的崩溃不会影响其他进程。
    进程的创建和销毁通常比较耗资源。
  • 3.进程的创建:
    进程可以通过系统调用(例如fork())来创建。fork()调用会复制当前进程,创建一个新的子进程,子进程将继承父进程的代码和数据,并继续执行。
    进程的通信:
    进程之间可以使用多种IPC机制来交换数据和通知事件。例如,管道用于在进程之间传递数据,消息队列用于异步通信,共享内存允许多个进程共享同一块内存等。
    线程(Thread)
  • 1.什么是线程:
    线程是进程内的执行单元。一个进程可以包含多个线程,它们共享同一进程的内存和资源。
  • 2.特点:
    线程是轻量级的,创建和销毁线程比进程更快。
    线程之间共享相同的地址空间,可以更容易地进行数据共享和通信。
    线程的崩溃可能会影响同一进程中的其他线程。
  • 3.线程的创建:
    线程可以通过线程库(例如pthread库)中的函数来创建。通常,一个进程在启动时会有一个主线程,然后可以通过库函数创建更多的线程。
  • 4.线程的通信:
    由于线程共享相同的地址空间,它们之间的通信通常更简单。但也需要小心使用线程同步机制(如互斥锁和信号量)来避免竞态条件和数据损坏。
  • 总之,进程和线程都是在Unix/Linux系统编程中非常重要的概念。了解它们的特点、创建方式以及如何进行通信和同步是编写多任务应用程序的关键。不同的应用场景可能需要使用不同数量的进程和线程,具体取决于性能和安全性需求。

苏格拉底挑战




  • 二、文件系统与I/O
    文件系统(File System)
    - 1.什么是文件系统:
    文件系统是操作系统用来组织和管理文件和目录的一种机制。它提供了一种结构化的方式来存储、检索和操作数据。在Unix/Linux系统中,文件系统通常是一个树状结构,由目录(文件夹)和文件组成。
    - 2.文件系统的特点:
    文件系统为文件和目录提供了命名和位置信息。
    它允许对文件进行创建、读取、写入、删除和更改权限。
    文件系统支持文件的组织,例如目录结构,以便用户可以轻松查找和管理文件。
    Unix/Linux系统中的文件系统通常是层次结构的,以根目录(/)为起点,通过路径来定位文件和目录。
    - 3.文件和目录:
    文件是数据的持久存储,可以包含文本、图像、程序等。
    目录是一种特殊类型的文件,用于组织其他文件和子目录。
    - 4.文件路径:
    文件路径是用于唯一标识文件或目录位置的字符串。绝对路径从根目录开始,相对路径相对于当前工作目录。
    I/O(输入/输出)
    - 1.什么是I/O:
    I/O是指计算机系统与外部世界之间的数据传输。它包括从磁盘读取文件、从键盘获取输入、向屏幕输出数据等操作。
    标准I/O:
    Unix/Linux系统提供了标准I/O流(stdin、stdout、stderr)来进行输入和输出。stdin用于输入,stdout用于标准输出,stderr用于错误输出。
    文件I/O:
    通过系统调用(如open()、read()、write()和close()),可以直接进行文件I/O。这些调用允许打开文件、读取数据、写入数据和关闭文件。
    - 2.文件描述符:
    文件描述符是一个整数,用于唯一标识打开的文件或I/O流。0表示stdin,1表示stdout,2表示stderr。
    缓冲I/O和无缓冲I/O:
    Unix/Linux系统支持缓冲I/O和无缓冲I/O。缓冲I/O将数据存储在缓冲区中,以提高性能,而无缓冲I/O直接将数据传输到设备。
    文件权限和I/O:
    Unix/Linux系统的文件系统具有强大的文件权限机制,它影响谁可以执行I/O操作。文件权限由文件的所有者、组和其他用户来控制。
    文件系统与I/O是Unix/Linux系统编程中的核心概念,对于开发应用程序、操作文件和处理数据至关重要。深入理解文件系统的组织方式和I/O操作的执行方式将有助于编写高效、可靠的应用程序。

苏格拉底挑战




问题与解决思路

  • 如何打开虚拟机的命令行
  • Linux下创建用户的命令是什么

实践过程截图

  • 建立自己的虚拟机

2.学习ls,pwd,cd三个基本命令

1.pwd为print working directory 表示执行这个命令

/home/wjc为当前路径保存地址
2.ls为list列出当前路径所有文件

3.cd为打开目录的地址

  • 需要修改语言才能打出中文
    终端中输入sudo apt-get istall ibus-pinyin
    ibus-setup设置输入法

关于ls的其他用法

  • ls -l表示以长格式显示
  • ls -a显示所有的目录和文件
  • ls-l-a同时使用也可
  • ls-l-h将列表以kb为单位以列表形式打开

关于cd的一些用法

  • cd ..返回上级目录
  • cd 文件名/子文件名打开该地址下的子文件
  • cd加一部分文件名后加Tab键可以自动补全目录,但需要有唯一相似的目录
  • 上键可以取得历史的命令
  • clear清空屏幕 cd ~返回主目录有时两者同时使用

标签:文件,二章,文件系统,笔记,学习,Unix,线程,Linux,进程
From: https://www.cnblogs.com/wujiuchun/p/17690998.html

相关文章

  • 机器学习算法原理实现——决策树里根据信息增益选择特征
    先说熵的定义:  再看信息增益信息增益是一种用于特征选择的指标,用于衡量特征对于数据集分类的贡献程度。它基于信息熵的概念,通过比较特征划分前后的信息熵差异来评估特征的重要性。信息熵是衡量数据集纯度的指标,表示数据集中的不确定性或混乱程度。信息熵越高,数据集的不确......
  • 《阿里大数据之路》读书笔记:第三章 数据同步
    第三章数据同步数据同步技术含义:不同系统间的数据流转,有多种不同的应用场景。应用场景:同类型不同集群数据库之间的数据同步主数据库与备份数据库之间的数据备份主系统与子系统之间的数据更新不同地域、不同数据库类型之间的数据传输交换大数据系统中的数据同步数据从业务系统同步......
  • k8s 学习
    服务分类:kubelet:直接跟容器实现容器的生命周期管理。转化为container达到给port的流程,负责写入的规则引擎,IPTables实现服务的映射访问的。还有一些比较重要的插件:比如coreDNS:可以为集群的中的SVC的创建一个域名的IP对应关系解析。实现负载均衡的功能:DASHBARD提供一个BS访问。......
  • 学习笔记-计算机病毒对抗技术-高级反病毒
    虚拟机技术1、虚拟CPU2、虚拟进程环境3、虚拟执行进程代码虚拟机在反病毒领域中的应用1、处理变形病毒2、基于虚拟机技术的行为判定病毒与虚拟机的对抗云查杀技术启发式扫描技术1、动态启发式2.静态启发式主动防御技术1、获得SSDT表2、在SSDT表中定位要替换的函数地址的位置3、使用......
  • Python基础学习day08
    常见的数据类型:int,整数类型(整形)bool,布尔类型str,字符串类型list,列表类型tuple,元组类型dict,字典类型set,集合类型float,浮点类型(浮点型)每种数据类型都有自己的特点及应用场景,以后的开发中需要根据实际的开发情况选择合适的数据类型。每种数据类型的讲解,会按照以下4个维度来进行:定义独有......
  • Markdown学习
    Markdown学习二级标题三级标题四级标题字体Hello,World!Hello,World!Hello,World!Hello,World!引用选择狂神说java,走向人生巅峰分割线图片超链接点击跳转到狂神博客列表Adc\51表格名字性别生日张三男2000.12.15代码ddda......
  • Python学习笔记-Python判断语句
    布尔类型和比较运算符布尔类型进行判断,只有2个结果:是否程序中,如何描述:是或否?使用:布尔类型。Python中常用的6种值(数据)的类型类型描述说明数字(Number)支持整数(int)浮点数(float)复数(complex)布尔(bool)整数(int),如10、-10浮点数(float),如13.14、-13.14复数(complex),如4+3j,以j结尾表示复数布尔(bool)......
  • 离散数学笔记——集合
    离散数学笔记——集合集合的概念集合是由一些确定的元素所组成的整体,其中的元素可以是任何事物定义:A={a1,a2,a3,...,an}表示集合的名称,{}表示集合的符号。a1,a2,a3,...an表示集合中的元素x∈A表示元素x属于集合A集合的特点集合没有重复元素集合......
  • 深度学习基础之梯度下降
    1.引言梯度下降是一种用于最小化(或最大化)损失函数的优化算法。它是机器学习和深度学习中的一个关键概念,通常用于调整学习算法中的参数。梯度下降背后的核心思想是迭代调整参数以最小化损失函数。它的工作原理是计算损失函数相对于每个参数的梯度,并在减少损失函数的方向上更新参数......
  • 继承的学习总结
      先上PPT,super就是把爸爸的东西拿来用,然后语法就是如下图  publicclassStudentextendsPerson  (调用)比如想调用“爸爸”的print那么可以写super.print(). (先在类里面用test1()拿到super,然后往外运行也ok)  这张图就是说,Student构造函数偷偷调用了"......