zoukankan      html  css  js  c++  java
  • 《Unix/Linux系统编程》第1、2章学习笔记

    第一章 引言

    系统编程

    系统编程是计算机科学和计算机工程教育不可或缺的一部分,对学习操作系统、嵌入式系统、数据库系统、数据挖掘、人工智能等方面有着重要的作用。

    本书目标

    • 强化编程背景知识
      • 详细介绍了程序开发步骤,包括汇报器、编译器、链接器等。
    • 动态数据结构的应用
      • 字符串标记化、搜索树节点、插入和删除树节点等。
    • 进程概念和进程管理
      • fork()、exit()、wait()等
    • 并发编程
      • Pthreads 编程、线程连接、互斥量等
    • 定时器和定时功能
    • 信号、信号处理和进程间通信
    • 文件系统
      • 存储设备、UnixLinux内核中的文件系统支持、文件操作的系统调用、库I/O函数等。
    • TCP/IP和网络编程
      • TCPIP协议、套接字API、UDP和TCP套接字编程,以及网络计算中的服务器-客户机模型。

    Unix

    • AT&T Unix
    • Berkeley Unix
    • HP Unix
    • IBM Unix
    • Sun Unix

    Linux

    • Debian Linux
    • Ubuntu Linux
    • Linux Mint
    • 基于RPM的Linux
    • Slackware Linux

    VirtualBox 安装Ubuntu

    1. 下载VirtualBox(http://download.virtualbox.org
    2. 安装VirtualBox
    3. 创建VirtualBox虚拟机
    4. 下载Ubuntu
    5. 安装Ubuntu

    使用Ubuntu Linux

    • Linux内核映像
      • Linux内核映像位于/boot目录中,一个可启动的Linux内核映像由三部分组成: |BOOT|SETUP|linux kernel|
    • Linux启动程序
      • 最受欢迎的有GRUB和LILO。
    • Linux启动
      1. 加载BOOT+SETUP至实模式内存的0x90000处
      2. 加载Linux内核至高端内存的1MB处
    • Linux运行级别
      • Linux内核以单用户模式启动,以多用户模式运行。
    • 登录进程
      • 三个文件流stdin、stdout、stderr,等待用户登录。
    • 命令执行
      • 执行命令解释程序sh,后者将提示用户执行命令。

    Unix/Linux文件系统组织

    • Unix/Linux文件系统采用树形组织结构
    • 文件类型
      • 目录文件
      • 非目录文件
        • 常规文件
        • 特殊文件
          • 字符特殊文件
          • 块特殊文件
          • 其他类型
        • 符号链接文件
    • 文件路径名
      • 根目录
      • 当前工作目录

    Unix/Linux命令

    Unix/Linux 系统管理

    • 用户账户
    • 添加新用户
      • sudo adduer username

    第二章 编程背景

    文本编辑器

    • vim
      • 命令模式
      • 插入模式
      • 末行模式
    • gedit
    • emacs

    程序开发

    • 创建源文件
    • 用gcc把源文件转换成二进制可执行文件
    • 静态与动态链接库
    • 可执行文件格式
      • 二进制可执行平面文件
      • a.out 可执行文件
      • ELF可执行文件
    • a.out文件
      • 文件头
        • tsize、dsize、bsize、total_size
      • 代码段
      • 数据段
      • 符号表
    • 程序执行过程
      1. 读取a.out文件头,以确定所需的总内存大小。
      2. sh从总大小中分配一个内存区给执行映像。
      3. sh放弃放弃旧映像,开始执行新映像。
      4. 执行从crt0.o开始,调用main()。
    • 程序终止
      • 正常终止
      • 异常终止

    C语言程序与汇编代码的链接

    • 用汇编代码编程
      1. 将C代码编译成汇编代码
      2. 汇编代码说明
    • 用汇编语言实现函数
    • 从汇编中调用C函数

    链接库

    • 动态链接库
    • 静态链接库

    makefile

    • make工具是一个程序,它按照顺序读取makefile,以自动有选择的执行编译链接。
      • 一个make文件由一系列目标项依赖项规则组成
    • 当make程序读取makefile时,通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项

    GDB调试工具

    • GDB调试工具是一个交互式调试工具,可以调试用C、C++和其他几种语言编写的程序。
    • GDB是一个功能强大的调试工具,使用非常简单,但应该注意,所有调试工具只能提供有限的帮助,在某些情况下用处不大,所以程序开发的最佳方法是仔细设计程序的算法,然后根据算法编写程序代码。

    C语言结构体

    • 结构体和指针
    • 类型转换
    • 链表
    • 树和二叉树
  • 相关阅读:
    SQL Functions
    wse 3.0
    mvc2 在 .net 4 下的ValidateInput(false) 无效
    FF3.0 不可以post空
    也谈.NET MVC 2 + ExtJS的部署问题
    ExtJs懒人笔记(2) ExtJs页面布局
    关于算法—— 一维字符串数组之间组合问题的C#实现
    (转)在ASP.NET 中实现单点登录(利用Cache, 将用户信息保存在服务器缓存中)
    XML中配置正则表达式的写法
    .NET MVC 下实现消息推送
  • 原文地址:https://www.cnblogs.com/dongjiashuai/p/15264777.html
Copyright © 2011-2022 走看看