第一、二章学习笔记

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 ~返回主目录有时两者同时使用
posted @ 2023-09-10 12:06  20211308wjc  阅读(12)  评论(0编辑  收藏  举报