1.Linux开发需要什么呢需要具备什么基础呢

2.什么是LINUX内核编程

3.如何才能自己写一个简单的linux操作系统

4.linux系统和编程先学哪好

5.编程用哪个系统好

6.学习linux操作系统需要掌握哪些东西?

Linux开发需要什么呢需要具备什么基础呢

电脑系统linux编程-linux系统编程的100个小项目

一、linux和os:

1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验

2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握

3、awk sed需掌握

4、共享内存的使用实现原理、然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?

5、c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)

6、ELF是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss段)

7、使用过哪些进程间通讯机制,并详细说明

8、makefile编写,虽然比较基础,但是会被问到

9、gdb调试相关的经验,会被问到

10、如何定位内存泄露?

11、动态链接和静态链接的区别

12、32位系统一个进程最多多少堆内存

13、多线程和多进程的区别(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)

14、写一个c程序辨别系统是64位 or 32位

15、写一个c程序辨别系统是大端or小端字节序

16、信号:列出常见的信号,信号怎么处理?

17、i++是否原子操作?并解释为什么?

18、说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)

19、列举说明linux系统的各类异步机制

20、exit() _exit()的区别?

21、如何实现守护进程?

22、linux的内存管理机制是什么?

23、linux的任务调度机制是什么?

24、标准库函数和系统调用的区别?

25、补充一个问题:系统如何将一个信号通知到进程?

二、c语言:

1、宏定义和展开(必须精通)

2、位操作(必须精通)

3、指针操作和计算(必须精通)

4、内存分配(必须精通)

5、各类库函数必须非常熟练的实现

6、哪些库函数属于高危函数,为什么?(strcpy等等)

三、c++:

1、一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键)

2、虚函数的作用和实现原理(必问必考,实现原理必须很熟)

3、sizeof一个类求大小(注意成员变量,函数,虚函数,继承等等对大小的影响)

4、指针和引用的区别(一般都会问到)

5、多重类构造和析构的顺序

6、stl各容器的实现原理(必考)

7、extern c 是干啥的,(必须将编译器的函数名修饰的机制解答的很透彻)

8、volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻)

9、static const等等的用法,(能说出越多越好)

四、数据结构或者算法:

1、《离散数学》范围内的一切问题皆由可能被深入问到(最重要,最体现功底,最能加分,特别是各类树结构的实现和应用)

2、各类排序:大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用等等

3、hash, 任何一个技术面试官必问(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞)

五、网络编程:

1、tcp与udp的区别(必问)

2、udp调用connect有什么作用?

3、tcp连接中时序图,状态图,必须非常非常熟练

4、socket服务端的实现,select和epoll的区别(必问)

5、epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认)

6、大规模连接上来,并发模型怎么设计

7、tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免time_wait状态占用(必须回答的详细)

8、tcp头多少字节?哪些字段?(必问)

9、什么是滑动窗口(必问)

10、connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态)

11、如果select返回可读,结果只读到0字节,什么情况?

12、keepalive 是什么东东?如何使用?

13、列举你所知道的tcp选项,并说明其作用。

14、socket什么情况下可读?

六、db:

1、mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标

什么是LINUX内核编程

真佩服楼上的2位对“内核编程”的理解力!

简单说,Linux内核编程就是开发Linux驱动程序,学会内核编程后,将会对操作系统的内部机制和工作原理有充分了解,可以从事硬件驱动开发、嵌入式系统开发等。内核编程的语言仍是传统的C语言,但其编写方法和调用接口与传统应用程序的差别较大,你必须了解如何处理中断、如何在内核态和用户态之间转换、PCI、DMA、内核地址映射、内核I/O等,这不是《UNIX高级编程》所涉及的内容,可以找一本专门讲Linux驱动编程的书看看,或在网上搜寻相关资料(关键词:Linux DDK)。不过先提醒一句,学习内核编程的难度很大,必须做好长期心理准备

如何才能自己写一个简单的linux操作系统

只要你学过汇编和C,只满足于写个“简单的操作系统",一两天就能搞定。

随便把你写过的小程序,用直接写硬盘软件(或者自己编一个,调用winapi的WriteFile函数就可以),写进硬盘/U盘引导区。记住,起始地址是7c00。

这就好了。注意,引导区只有440个字节给你用,程序不能太大,所以这部分基本要用汇编写。440字节后面是硬盘/U盘分区信息,不可以乱动。乱动以后bios可能没法识别硬盘/U盘。

引导区最后两个字节必须是55AA,不过一般你不用管,硬盘/U盘格式化的时候都已经给你写好了。

这样你的程序就在开机的时候直接运行了。

想调用大程序也没问题,你需要写个不超过440字节的程序,负责把第二个扇区的内容载入内存并执行,由第二个扇区的代码负责把所有代码载入内存。后面的部分用C写或者别的高级语言写都没什么问题了。

至于你想要具体作什么,就写什么,屏幕上画个画,管管硬盘上的文件,和用户互动一下,你随意。和你平常写程序没啥两样。总之一个能完成任务的简单操作系统就完事了。

最多几天时间你就能搞定。这差不多能搞个接近dos1.0的“简单操作系统”。

不过接下来才是你真正要学的。例如文件管理,内存管理,保护模式,进程管理啥的。麻烦归麻烦,但解放了自由了,终于可以编写内核态才准用的代码了,做的事情全部都是用户态下面不让做的事情。操作系统的学习,从这里才算真正开始。

linux系统和编程先学哪好

这就要根据个人的具体情况及未来你的就业方向,现在大部分用户使用window系统,一般大部分还是编写window软件,这样对你的就业范围大,但是一些服务器大多是使用linux和unix系统,另外还要看你自己的变程的技术和对知识的渴望度,如果你对c语言较熟悉的话,那么这两个内核编程你先学那个都一样的,因为大部分都还是用的c语言的,

编程用哪个系统好

问题一:学习编程选哪个系统好? Linux和Mac OS都不错啊,为什么Mac OS不合适?谷歌公司过半是用的Mac OS,公司强制规定不准用windows,基本上以Mac OS和Linux为主。Linux开源,可以在网上找到很多社区,找答案比较方便。Mac OS基于Unix FreeBSD架构,安全性高,开发也比较容易,其实Linux下IDE并不是很多的,如果是新手比较依赖IDE的话,可能Mac OS更适合你

问题二:现在编程用哪个操作系统好? 10分 初学者应选windows 如果你想更专业化的学习编程可以用专业化系统 而且还要看你要用什么语言进行编程 不同的语言也要选择不同的系统 ja C# 还是c++ 等

问题三:数据库或者编程,一般用什么系统? linux是操作系统,是一种指令搐,windows也是操作系统, linux是免费的,windows是要钱的,但linux操作有些不方便,但其实你习惯用了就觉得他也挺方便 ,他很强大,强大到可以了解计算机的最深层,控制计算机任何一个角落。在windows里,系统内部你是看不到的。说了这么多,还没入正题。

数据库和编程在现在市面流行的计算机里几乎都有,操作系统影响不是太大,只是操作方式的不同而已。

问题四:学编程用什么电脑比较好? 楼主可是要的笔记本, 现在主流的笔记本一般对于编程来说都没啥问题,不过还是建议楼主买 CPU 主频 和 内存 大一点的,这机器 玩游戏啥都都没问题,当然 编译程序也是相当的快,CPU和内存小了 ,比如C++ 编译大一点的程序 经常卡死,或者 等半个钟头… 望纳

问题五:想学编程用哪个操作系统好 初学者用windows。初学者要是用linux,会死在学习使用工具的路上。

问题六:编程用什么牌子电脑好 没限制的。

啥品牌都行。

问题七:做技术的需要安装很多编程软件等,用什么系统比较好 楼上说的不对,WIN7对主流的设计软件都支持。现在新的设计软件都增加了对WIN7的支持,可以放心使用。即使是老的版本,可以更改WIN7下的兼容方式兼容。

问题八:买电脑学编程用什么电脑比较好?用什么系统比较好? 对于初学者而言,学习编程实在是没有任何配置要求,200块的二手电脑也是足够学习的,就是运行什么慢一点就是了,但是并不妨碍学习。

系统也是随意的,XP/7/10都可以。

问题九:新手学习什么编程软件好? 真荣幸能回答一位和我志同道合的问友的问题:

这个问题我也遇到过,不过我是通过问老师,去图书管查资料自己做出决定的。

对于你的问题,回到如下:

1:作为编程爱好者或者初学者:首先必须先确定自己是否在编程方面深造!

2:确定后,如果你是对于编程很感兴趣,想在编程上有所发展的话请看一下“甲”指引,若否的话则请看“乙”指引

甲:理由1:目前最有前途的编程语言是c语言(证据:ISO已经将c语言标准化,通俗来说就是c语言是目前、以至于将来都是普及全球的)

理由2:c语言功能非常强大,最先的windows操作系统都是它的杰作

注:但也有它的缺点,唯一缺点是:较为复杂,学习起来较难,但对于那些对编程发烧友来说,这完全说不上缺点,对吧!

乙:学VB吧!VB是比尔盖茨发明的,

理由:操作简单,入门快

O(∩_∩)O~O(∩_∩)O~O(∩_∩)O~O(∩_∩)O~谢谢支持O(∩_∩)O~O(∩_∩)O~O(∩_∩)O~O(∩_∩)O~

学习linux操作系统需要掌握哪些东西?

一.为什么要学linux? \x0d\\x0d\当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好! \x0d\\x0d\二.起步 \x0d\\x0d\你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix \x0d\问题1:版本的选择 \x0d\\x0d\北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux \x0d\开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看 \x0d\无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。 \x0d\对于初学linux的人来说,我建议是使用redhat,原因如下: \x0d\1)现在很多书都是以redhat为例讲的,为了与书本协调一致 \x0d\2)周围的人都用redhat,交流比较方便 \x0d\3)redhat应用范围广,有典型性和代表性 \x0d\4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上 \x0d\而应集中精力学习最有用的东西。 \x0d\\x0d\//注:现在觉得RH很死板,AS,ES等用在服务器上或许不错, \x0d\Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮 \x0d\\x0d\如果你并不打算深入学习linux,而是有诸如适应北京市办公平台迁移到 \x0d\linux上这种需要,那么中软,红旗等中文linux是不错的选择 \x0d\\x0d\我强烈建议:自己亲自动手把linux装到你的硬盘上, \x0d\你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单 \x0d\\x0d\从此现在开始,请不要以windows的工作方式来考虑问题, \x0d\应该尝试挖掘linux身上的“天才unix”的气质。 \x0d\\x0d\三.进阶 \x0d\掌握至少50个以上的常用命令 \x0d\理解shell管道"|",文件流重定向">"及追加">>"等 \x0d\熟悉Gnome/KDE等X-windows桌面环境操作 \x0d\掌握.tgz.rpm.biz等软件包的常用安装方法 \x0d\学习添加外设,安装设备驱动程序(比如modem) \x0d\熟悉Grub/Lilo引导器及简单的修复操作 \x0d\熟悉系统固有目录的名称及公用 \x0d\学会用mount命令访问其他文件系统 \x0d\了解vi,gcc,gdb等常用编辑器,编译器,调试器 \x0d\学习linux环境下的简单组网 \x0d\\x0d\建议:买一本不需要太厚的linux教材,大致可以满足要求 \x0d\//现在的书越来越多了,还带很多图,我当时可没这么多书:) \x0d\\x0d\四.高级应用 \x0d\\x0d\澄清一些概念: \x0d\linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识 \x0d\\x0d\我个人认为比较重要几种linux语言 \x0d\1.英语 \x0d\即使你不学linux,我也强烈建议你学好英文[U.S.english] \x0d\因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装 \x0d\你必须能无障碍的阅读大量的英文技术文档 \x0d\在搜索引擎找到的英文网站和网页中熟练的检索 \x0d\最好能有用英文直接交流的能力, \x0d\摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距 \x0d\\x0d\2.shell[sed/awk] \x0d\shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat \x0d\但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell \x0d\几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上 \x0d\这也是CS中的一个重要思想。 \x0d\此外,shell可以实现工作自动化,这个概念也比较重要 \x0d\sed,awk用来处理文本,历来很常用 \x0d\\x0d\3.Perl/PHP \x0d\漂亮的脚本, CGI的首选,比ASP好,应用面很广 \x0d\\x0d\4.C\C++ \x0d\C、C++是linux/unix的核心语言,系统代码都是C写的 \x0d\\x0d\5.ASM \x0d\系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要 \x0d\//走核心路线的话,才c\c++,asm最重要 \x0d\\x0d\6.Ja,Python,Tcl,XML \x0d\\x0d\*系统管理篇 \x0d\在熟悉linux的基础上还需要掌握至少一种unix \x0d\我首推Solaris,其次是FreeBSD \x0d\比如运营级系统一般是Solaris+Oracle/DB2之类的 \x0d\学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind \x0d\等各种应用服务器的构架及电子商务的应用 \x0d\熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群 \x0d\等各种企业级应用解决方案 \x0d\熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复 \x0d\系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能 \x0d\\x0d\我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员 \x0d\\x0d\各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内 \x0d\搜索引擎寻找最新文档,以避免错误和漏洞 \x0d\有几本技术大全和技术内幕我认为都是这方面不错的书 \x0d\\x0d\*深入学习linux \x0d\\x0d\我个人理解的读linux内核需要的基础: \x0d\在此之前,希望先把应用层的东西学一下,那样会比较好理解 \x0d\1.C \x0d\如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种), \x0d\建议再看一下 \x0d\《The C Programming Language》Second Edition这本圣经 \x0d\/*如果想学缓冲区溢出,这点C的功力可能是不够的*/ \x0d\还有,,, \x0d\反正经典书看多了是没有坏处的 \x0d\\x0d\2.asm (AT&T语法,保护模式) \x0d\保护模式下的比较复杂,基本上每本讲内核的书都会有介绍 \x0d\有80x86 Intel语法的基础就行, \x0d\有兴趣可以看看Intel的官方**** \x0d\\x0d\3.数据结构(离散数学) \x0d\计算机专业的核心课程,重要性我就不说了 \x0d\\x0d\4.操作系统原理 \x0d\看懂这个再去读linux吧 \x0d\\x0d\5.微机原理/组成原理(数字电路) \x0d\底层直接和硬件打交道,所以这个也要 \x0d\\x0d\6.了解linux/unix \x0d\我想至少你要会操作吧,了解unix的API