首页 > 其他分享 >第一次读书笔记

第一次读书笔记

时间:2022-09-04 21:23:42浏览次数:58  
标签:调用 读书笔记 编程 系统 第一次 编译器 内核 Linux

总结:

  • 第一二单元总的来说是在描述Linux系统中c语言的重要性,以及在其中的一些使用技巧。其中C语言数据结构中的数据结构,就是Linux文件系统构建起来的基础。第一章主要包含了一些Linux系统的基础命令操作,而后第二章更多的讲的是Linux系统下c语言的使用,C语言程序在系统中的编译过程,它是如何执行、如何结束的。

其他知识点

  1. 系统软件运行在系统底层,与内核和系统核心库进行交互。

  2. 常见的系统软件包括Shell、文本编辑器、编译器、调试器、核心工具(GNU core utilities)以及系统守护进程。网络服务、Web服务和数据库也属于系统软件范围。(基于内核和C库实现)
    3.系统编程是编写一切软件的灵魂。

  3. Linux是类UNIX的现代操作系统,由Linus Toralds和全球的程序员一起完成的。两者的系统编程核心是一样的,但是Linux支持更多的系统调用,支持不同的行为、拥有不同的特性。

  4. 系统编程和应用编程之前存在着一定的区别;系统编程的程序员需要对其工作的硬件和操作系统都有了解。系统程序主要与内核和系统库打交道,应用程序需要与更高层次的库进行交互,这些库将硬件和操作系统的细节抽象封装起来增强系统的可移植性、不同版本之间的兼容性以及可以构建更易于使用、功能更强大的高级工具箱。

  5. LinU型系统编程三大基石:
    1、系统调用
    2、C库
    3、C编译器

点击查看代码
1.系统调用
    系统调用(syscall)是从操作系统请求一些服务或资源,是用户空间如文本编辑器、游戏等向系统内核发起的函数调用。(read()、write()、get_thread_area()、set_tid_address())
    Linux实现的系统调用远远小于其他内核。
    调用系统调用。位于用户空间的应用程序无法直接访问内核空间。内核需要有一种机制,用户空间需要执行系统调用时,通过该机制通知内核
2.C库
			UNIX应用程序的核心。现代Linux系统中,C库由GNUlibc提供,简称glibc;glibc中除了标准C库外,还提供系统调用封装你、线程支持和基本应用工具。
3.C编译器
			在Linux中,标准C编译器是由GNU编译器工具集(GCC,表示GNU C编译器;此外gcc还表示C编译器二进制程序)提供的。
4.C++

6. API和ABI(应用程序编程接口和应用程序二进制接口)两者独立都影响可移植性。
点击查看代码
API:定义了软件模块之间在源代码层交互的接口。理解为一个软件模块如何调用另一个软件模块。API仅仅是定义接口,真正提供API的软件模块称为API实现。保证源码兼容。
ABI、:定义了两个软件模块在特定体系结构上的二进制接口。定义了应用内部怎么交互,应用与内核怎么交互、以及怎么与库交互。保证二进制兼容。(在同一个ABI中,目标代码可以在任何系统上正常工作,而不需要重新编译)ABI主要关注调用约定、字节序、寄存器使用、系统调用、链接、库的行为以及二进制目标格式。ABI是操作系统和体系结构共同提供的功能。
* Unix/Linux 系统编程

文件路径名
绝对路径和相对路径。绝对路径从根目录出发(有/开头的文件路径),相对路径从当前位置出发。

Linux常见命令

简单命令操作
Ls

Touch

Cat

Cp

Zip

Man 2 open

用户登录系统时,系统会验证/etc/password和/etc/shadow两个文件

添加新用户

第二章 编程背景
1、文本编辑器VIM

实践

2.gedit编辑器(ubantu20.04初始默认文本编辑器)

3.Emacs编辑器

程序开发


T1.c

执行命令直接生成a.out

静态链接与动态链接:静态链接将a.out程序中所需要的所有数据和调用文件全写入a.out之中,会使得文件完整独立,但文件体积会相当的大。动态链接的方式,减小了a.out文件大小,减少了没有必要的重复编译。

可执行文件格式(linux中文件是否可置信,完全依照它本身在系统中被赋予的权限,但执行是否会有正确结果,还需要看文件的内容以及文件格式)

a.out文件内容:1文件头(加载信息和大小)、2代码段、3数据段、4符号表

程序启动及执行过程

程序结束
正常结束/异常结束

Longjump:C语言中长距离函数参数传递使用

链接库
静态链接和动态链接

Make,有选择的执行编译链接

GDB调试工具(交互式调试工具)

如EMACS、codeblocks

标签:调用,读书笔记,编程,系统,第一次,编译器,内核,Linux
From: https://www.cnblogs.com/JIANGJININ/p/16656083.html

相关文章

  • 《Unix/Linux系统编程》第一、二章读书笔记
    自学教材1、2章学习笔记一、任务要求学教材第1,2章,提交学习笔记(10分)知识点归纳以及自己最有收获的内容(3分)问题与解决思路(2分)实践内容与截图,代码链接(3分)知识的结构......
  • 第一次读《计算机科学概论》有感
    第一章的问题:1.计算机系统各层是有怎样的有机联系用晶体管代替真空管有什么技术上的优势第二章的问题:1.为什么计算机放弃了十进制、十六进制而选择了二进制2.二进制与......
  • 【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三
    【问题】为什么System.Timers.Timer更改间隔时间后的第一次触发时间是设定时间的三倍?独立观察员2022年9月4日在编写“Wifi固定器 [1]”程序时,按如下方式使......
  • 《Java编程思想》读书笔记(四)
    前言:三年之前就买了《Java编程思想》这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十......
  • 教材第一章读书笔记
    教材第一章读书笔记by20201321周慧琳学习目标第一章:引言第一章的引言部分包涵Unix的历史、Linux的开发和各种版本(没有提及centOS和openeuler,我们可以自己补充学习),还......
  • 《Java编程思想》读书笔记(四)
    前言:三年之前就买了《Java编程思想》这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十......
  • 开学的JavaScript第一次测试
    这次的课堂测试我的成绩并不理想,经过一些时间的反思,我总结了一些不周到的原因,首先是我在做老师的给定的程序是没有仔细阅读,没有看到一些具体的要求,导致多米诺古效应,所以进......
  • 4-《从零开始构建企业级推荐系统》读书笔记
    第1章推荐系统的时代背景为什么需要推荐系统流量利用长尾挖掘用户体验技术储备推荐什么东西只要是具有非普适性特点的东西,就可以用来做推荐,将其个性化推荐......
  • 软件定义网络第一次博客园报告
    实验环境安装配置建议遇到安装爆红可以尝试加上--default-timeout=60来限制超时错误......
  • 第一次java测试
    二、数据结构要求:(5分) 1、定义公寓类,类名:RoomInformation,其中包括五个私有变量(roomno,stunno1,stunno2,stunno3,stunno4,hygienescore)。各成员的含义如下:变量roomno为字......