zoukankan      html  css  js  c++  java
  • Linux 基础

    Linux结构

    一个完整的Linux操作系统由Linux内核、Shell、文件系统和使用工具组成。 
    1. Linux内核 
    2. Shell 
    Shell是系统的用户界面,提供了一种用户与内核进行交互操作的接口。它接收用户输入的命令并把它送入内核去执行。 
    实际上Shell应该是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。

    目前主流的Shell

    • Bash: 是GNU操作系统上默认的Shell。
    • C Shell: 是SUN公司Shell的BSD版本。

    3.Linux的文件系统 
    文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。 
    4. Linux的使用工具

    • 编辑器
    • 过滤器
    • 交互程序

    Linux操作系统的分类

    1. 根据包管理系统分类 
      Linux操作系统中所安装的软件通常都是以包的形式存在。通常来说,包中除了可执行文件外,其中还包括了该包的依赖关系、设置文件等。 
      目前两个主要的包管理软件是RPM包管理软件Deb包管理软件

      • RPM包管理软件(Red Hat Package Manager)

        几个常用的RPM包操作命令:

        • rpm -vih file.rpm: 安装一个RPM包
        • rpm -e file.rpm: 卸载一个RPM包
        • rpm -qpR file.rpm: 查看RPM包的依赖关系
        • rpm -q file: 查看系统已安装的RPM包
      • Deb包管理软件

        Deb的包也是由源代码包和二进制包组成的。

        • 源代码包
        • 二进制包

          以.deb扩展名来表示,这些文件通常称为DEB文件,其中包含可执行文件、文档、配置文件和版权信息以及其他一些东西。 
          可以使用Debian的dpkg工具包安装。

        Deb包管理系统同样提供了相应的命令,用于管理操作。

        • apt命令,用于从源列表(可以是CD、网络等)下载Deb包。
        • dpkg命令:通过数据库来对系统中软件进行管理,这个数据库位于/var/lib/dpkg 目录中。

    采用Deb包管理系统的发行版最常见的是Debain 和 Ununtu。

    2.根据 X Window系统进行分类

    • KDE
    • GNOME

    Linux中的几个术语

      1. GNU 
        GNU是”GNU’s Not UNIX”的缩写,目的是为实现一个符合UNIX系统接口标准、软件丰富且可以自由使用的软件库

      2. POSIX 
        POSIX是可移植的UNIX操作系统接口(Portable Operating System Interface of UNIX)的缩写

    Linux如何执行一个程序

    Linux中的程序是一个在磁盘上的可执行文件,内核调用exec函数先将这个可执行文件调入存储器中,然后执行它。
    这个程序的执行实例被称为进程,在Linux中每个进程都对应一个唯一的非负数字标识符,称为进程ID。

    8种进程终止方式
    对于一个进程而言,有8种方式可以使得其终止,具体说明如下:

    • 从main函数中使用return语句返回。
    • 调用exit函数终止进程。
    • 调用_exit 或者 _Exit函数终止进程。
    • 最后一个线程从其启动例程返回。
    • 最后一个线程调用了pthread_exit函数。
    • 调用abort函数。
    • 接到一个信号并终止。
    • 最后一个线程对取消请求做出了响应。

    总之:
    在Linux操作系统中,内核是程序执行的唯一方法是调用一个exec函数 ,进程自愿终止的唯一方法是显式或者隐式地调用_exit 或者 _Exit,又或者使用一个外部信号来使得该进程终止。

    Linux程序存储空间

    编译生成的可执行文件的存储空间可以分为如下几个部分:

    • 正文段:存放了处理器执行的机器指令,通常来说,正文段是可以共享的,所以包括Shell、gcc在内的程序在存储器中只需有一个副本。通常来说,正文段也是只读的。
    • 初始化数据段(全局静态变量、cosnt 变量):初始化数据段通常又被称为数据段,其包含了程序中需要进行初始化的变量值。例如:
    int couter = 0;
    //counter 被初始化为0,然后存放在初始化的数据段中
    //通常来说这些变量会是全局变量
    //因为非全局变量会在调用的时候在分配空间并进行初始化
    • 非初始化数据段:用来存放不需要进行初始化的变量,又被称为BSS段。
    • :这个段用来存放自动变量(auto)以及每次函数调用(函数调用栈)时需要保存的信息。
    • :用于动态存储分配,这个段位于非初始化数据段与栈之间,在很多场合下这个段和栈一起被合称为堆栈段。

    注意:
    对于一个可执行文件而言,其通常还有若干其他类型的段,例如,包含了符号表的段、包含了gdb调试信息的段和包含了动态共享库连接表的段等,但是这些段并不会在进程调用的时候被装入存储区中。
    这里写图片描述

  • 相关阅读:
    Android的activity的生命周期
    COCOS学习笔记--重力感应Acceleration
    【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)
    cocos2d-x改底层之获取UIListView的实际内容大小
    Android 使用ListView的A-Z字母排序功能实现联系人模块
    Netty3 源代码分析
    A002-开发工具介绍
    数据结构:二叉树(前,中,后,层次)非递归遍历。
    jQuery开发之Ajax
    cocos2d-x-3.6 引擎概述
  • 原文地址:https://www.cnblogs.com/lanqiu5ge/p/9472225.html
Copyright © 2011-2022 走看看