zoukankan      html  css  js  c++  java
  • 第一、二章读书笔记

    第一、二章读书笔记

    第一章 引言

    1.系统编程的作用

    • 使学生有效利用系统资源开发应用软件
    • 为学生打下专业基础

    2.本书目标

    • 强化学生的编程背景知识
    • 了解动态数据结构的应用
    • 领会进程概念和进程管理
    • 学会并发编程
    • 学会使用定时器和定时功能
    • 了解信号、信号处理和进程间通信
    • 学会文件系统相关操作
    • 了解TCP/IP和网络编程

    3.关于UNIX

    • Unix是一种通用操作系统,许多公司都开发过Unix操作系统,大多数Unix操作系统都是专有的,并且与特定的硬件平台相关联。

    4.关于LINUX

    • Linux是一个类Unix系统,包含Unix系统的很多特性,可免费使用,易于安装。
    • 利用VirtualBox或VMware可在Windows主机中安装和运行Linux

    5.使用LINUX

    • Linux启动程序:GRUB和LILO,或HD启动程序(Wang 2015)
    • Linux以单用户模式启动
    • 登录进程:三个文件流stdin(用于输入)、stdout(用于输出)、stderr(用于错误输出),之后等待用户登录
      -命令执行:cd(更改目录)、exit(退出)、logout(注销)等

    6.使用Ubuntu LINUX

    1. 使用Cutrl+ALT+T可打开终端
    2. 要运行任何特权命令,用户必须输入sudo command
    3. 在当前目录下运行程序每次必需输入./a.out,方便起见在用户的主目录中创建一个包含 PATH=$PATH:./ 的.bashrc文件
    4. 在64位Linux下,使用 gcc -m32 t.c # compile t.c into 32-bit code 生成32位代码。
    5. Unix/Linux文件系统采用树形组织结构
    6. 文件类型:
    • 目录文件:一个目录可能包含其他的目录和(非目录)文件。

    • 非目录文件:

      • 常规文件:包含普通文本或包含可执行的二进制代码。
      • 特殊文件:特殊文件时/dev目录中的条目。
    • 符号链接文件:属于常规文件,其内容为其他文件的路径名。

    1. Linux命令:
    • ls:ls dirname:列出CWD或目录的内容
    • cd dirname:更改目录
    • pwd:打印CWD的绝对路径名
    • touch filename:更改文件名时间戳(如果文件不存在,则创建文件)
    • cat filename:显示文件内容
    • cp src dest:复制文件
    • mv src dest:移动或重命名文件。
    • mkdir dirname:创建目录
    • rmdir dirname:移除(空)目录
    • rm filename:移除或删除文件
    • ln oldfile newfile:在文件之间创建链接
    • find:搜索文件
    • grep:搜索文件中包含模式的行
    • ssh:登录到远程主机
    • gzip filename:将文件压缩为.gz文件。
    • gunzip file.gz:解压.gz文件
    • tar -zcvf file.tgz .:从当前目录创建压缩tar文件
      ...
    1. Linux手册页:
    2. 利用 sudo adduer username 添加新用户

    第二章 编程背景

    1.Linux中的文本编辑器

    • vim

      • 移动光标的命令键:h 左移一个字符 l:右移一个字符
        j:下移一个字符 k:上移一个字符
      • 插入模式:i:插入文本 a:追加文本 esc:退出
      • :w:写入(保存)文件。
      • :q:退出vim。
      • :wq:保存并退出。
    • VIAIWYG编辑器

      • Ctrl+c:中止或退出
      • Ctrl+k:删除行到缓冲区
      • Ctrl+Y:从缓冲区内容中复制或粘贴
      • Ctrl+S:保存已编辑文本
    • getdit

    • emacs
      ...

    2.程序开发

    1. 程序开发步骤
      1. 创建源文件
      2. 用gcc把源文件转换成二进制可执行文件
      3. 链接
    2. 静态与动态链接
    • 创建二进制可执行文件的方式有两种:静态链接和动态链接分别使用静态库和共享库。动态链接所用的库称为动态链接库(DLL),在Linux中称为共享库(.so文件)
    1. 可执行文件格式
    • 二进制可执行平面文件
    • a.out可执行文件
    • ELF可执行文件
    1. a.out文件内容:文件头,代码段,数据段,符号表。
    2. 程序执行过程
      1. 读取a.out文件头,以确定所需的总内存大小,包含栈空间大小
      2. sh从总大小中分配一个内存区给执行映像
      3. sh放弃旧映像,开始执行新映像
      4. 执行从crt0.o开始,调用main()
    3. 程序终止

    3.C语言中的函数调用

    • PC(IP):指向CPU要执行的下一条指令
    • SP(SP):指向栈顶
    • FP(BP):指向当前激活函数的栈帧
      -long jump:返回到调用序列中较早的某个函数

    4.C语言中与汇编代码的链接

    1. 将c语言编译成汇编代码
    2. 用汇编语言实现函数
    3. 从汇编中调用C语言

    5.链接库

    在Linux中,有两种链接库:用于静态链接库和动态链接库。

    • 静态链接库的创建
    • 动态链接库的创建

    6.makefile

    • make程序按照顺序读取makefile,它通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项。Makefile支持变量和后缀规则。

    7.GDB调试工具

    • 使用步骤:
      1. 创建makefile:
        t: t.c
        gcc -g -o t t.c
        使用RMACS编辑c语言源文件。
      2. 编译源代码:打开菜单,选择编译或
        gccc -g -o t t.c
      3. 启动GDB
      4. 多窗口GDB:菜单中选择Gud-GDB-MI-Display Other Windows

    8.C语言结构体、指针和链表操作

    • 定义c语言结构体时,每一个字段都必须具有一个编译器已知的类型
    • Unix文件系统的逻辑结构体是一个普通树,Linux文件系统也相同

    9.Linux中的树

    • mkdir 路径名:为给定的路径名创建一个新目录
    • rmdir 路径名:如果目录为空,则删除该目录
    • pwd:打印当前工作目录的(绝对)路径名
    • creat 路径名:创建一个FILE结点
    • rm 路径名:删除FILE结点
    • save 文件名:将当前文件系统树保存为文件
    • reload 文件名:从一个文件构造一个文件系统树
    • menu:显示有效命令菜单
    • quit:保存文件系统树,然后终止程序
      ...
      总结体会

    一二章的内容大多都是一些介绍Linux虚拟机的安装和基础用法,以及与之前所学过的c语言相关知识的对接,在阅读前两章的内容后,我对于Linux系统也有了一些初步的认识,并且在虚拟机上进行了一些尝试,感觉收获了很多知识。

  • 相关阅读:
    LINQ to XML一些基本查询
    系统二级域名配置说明
    分布式文件系统部署Hadoop【转载】
    5 ways to instantly appear more confident
    hadoop Namenode和DataNode架构分析
    Employee burnout: Around the corner? Already here?
    阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访
    eclipse web项目 分多个源文件目录
    配置VS2008本地调试.NETFRAMEWORK源代码
    Google搜索指令大全
  • 原文地址:https://www.cnblogs.com/zhangwenying/p/15269439.html
Copyright © 2011-2022 走看看