Linux——高级编程之概要

1、为什么要学习Linux下的高级编程

应用课程的学习,不知道Linux内核的强大功能
Linux下的高级编程课程学习:感知到内核的存在,内核的强大功能
        文件管理
        进程管理
        设备管理
        内存管理
        网络管理

2、怎么样学习Linux下的高级编程

Linux下高级编程的特点:涉及到内核向用户空间提供的接口(函数)

3、为什么内核要提供这些接口呢

主要原因:
A:内核要为应用程序服务,应用程序如果没有内核服务,则功能非常单一
B:内核是一个稳定的代码,同时也要为多个用户空间的程序服务,为了防止用户空间的某些用户程序使内核代码崩溃或产生其他问题

所以:
内核向用户空间提供的接口(函数),在这些接口函数中加上一些保护,这样会使符合接口函数的应用提供服务,同时也保护内核

4、重点学习这些接口,怎么样学习呢

之前学习的是程序的实现,即算法思路
在系统编程阶段主要任务就是系统调用接口(函数),接口的功能,参数,返回

5这一阶段主要涉及的课程

IO

 文件io
 标准io
 目录io 

进程

进程控制
线程(线程的控制,线程的同步和互斥)
进程通信(无名管道,有名管道,信号,IPC(共享内存,消息队列,信号灯))

网络

任然属于进程通信,他是一个网络中二台机器之间的两个进程之间的通信
TCP
UDP
服务器代码的完善(循环服务器,并发服务器(多进程,多线程,多路复用))
io模型:信号驱动io,阻塞io,多路复用io

原文地址:https://www.cnblogs.com/hyxk/p/11334299.html

时间: 2024-08-08 18:41:20

Linux——高级编程之概要的相关文章

Linux高级编程--02.gcc和动态库

在Linux环境下,我们通常用gcc将C代码编译成可执行文件,如下就是一个简单的例子: 小实验:hello.c #include <stdlib.h> #include <stdio.h> void main(void) { printf("hello world!\r\n"); } 可以通过如下指令来编译出一个可执行文件: gcc hello.c 执行完该命令后,就会得到一个a.out的可执行文件. 编译的过程 前面的例子只是简单的介绍了一下gcc的使用方法,

Linux高级编程--05.文件读写

缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.fseek, 另一套则是POSIX定义的系统API:open.close.read.write.seek. 其中POSIX定义的API是系统API,而C标准API是基于系统API的封装,并且提供了额外的缓冲的功能.因此也可以把它们叫做缓冲I/O函数和非缓冲I/O函数. 除了前面介绍的这几个缓冲IO函数

Linux高级编程--01.vi命令

VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠标来得快,一旦熟练后用起来是有种非常流畅的感觉的,也有人因此而非常喜欢它. 不管你喜欢也好,不喜欢也好,VI是Linux的标配编辑器,很多时候你也只有这一个编辑器可用,如果要做一个Linux Coder,熟悉VI还是非常有必要的. PS:由于VI的命令非常多,本文主要只介绍一些基础命令.并且就算是这

Linux高级编程--10.Socket编程

Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列. TCP Socket 基于TCP协议的客户端/服务器程序的一般流程一般如下: 它基本上可以分为三个部分: 一.建立连接: 服务器调用socket().bind().listen()完成初始化后,调用accept()阻塞等待,处于监听

linux高级编程补充知识

F: 计算机系统结构: ------------------------------- 应用程序 ----------------- |  库函数 ------------------------------- 系统调用 ------------------------------- 虚拟文件系统  |    进程模块 -(文件模块)-|   进程间通信 设备文件     | ------------------------------- 硬 件 ------------------------

〖Linux〗Linux高级编程 - 进程间通信(Interprocess Communication)

[转自: http://blog.csdn.net/Paradise_for_why/article/details/5550619] 这一章就是著名的IPC,这个东西实际的作用和它的名字一样普及.例如我们浏览网页,打印文章,等等. IPC总共有五种类型: 共享内存(Shared Memory):最容易理解的一种,就像一个特工把情报放在特定地点(内存),另一个特工再过来取走一样. 内存映射(Mapped Memory):和共享内存几乎相同,除了特工们把地点从内存改成了文件系统. 管道(Pipes

Linux高级编程--03.make和makfile

Makefile语法基础 在Linux下,自动化编译工具是通过make命令来完成的(一些工具厂商也提供了它们自己的make命令,如gmake等),make命令的基本格式如下: make [-f makefile] [label] 它可以通过-f参数指定输入文件,当省略-f参数时,默认输入文件名为Makefile,由于我们通常不用这个-f参数,往往就用默认的Makefile文件名. Makefile是一个文本文件,它是基于一定的语法规则的,它的基本执行规则定义如下: target : [prere

Linux高级编程--06.进程概述

进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数. 进程的状态,有运行.挂起.停止.僵尸等状态. 进程切换时需要保存和恢复的一些CPU寄存器. 描述虚拟地址空间的信息. 描述控制终端的信息. 当前工作目录(Current Working Directory). umask掩码. 文件描述符表,包含很多指向file结构体的指针. 和信号相关的

Linux高级编程--11.信号

基本概念 信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的.下面就以Ctrl+C为例简单的说明信号的处理流程: 用户按下Ctrl-C,这个键盘输入产生一个硬件中断. 该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断. 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程). 当内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的