Osnews Chinese Version key recommendations: amateur Operating System Development Part 2: set goals and expectations

Source: Internet
Author: User
Have you completed the test and started operating system development? At this point, many operating system developers try to find a simple step-by-step Wizard to guide them to write a second
Start the file in hexadecimal format and make some text
I/O, and other "simple" things. But the hidden plan should follow more or less: at any time, they should consider that their ideas should be easily implemented and they will implement that idea. Gradual transition
To function, their operating system will be able to establish the function, and then slowly surpass. In my opinion, this is not the best way to reach a stage (if arriving at a stage is your goal ). In this article, I want to explain
And what you should do at this stage.

Design importance

First, relying heavily on tutorials hinders creativity.
Generally, we do not fully understand the lengthy paragraphs to describe what we are doing. We often prefer blind obedience,
The large red warning mentioned by the author in this practice is ignored. So what do we get? Many low-level Web guides mainly show you how to use C to create a single kernel and UNIX clone on the simple console.
What do you think? That's normal. We already have a lot of tutorials. In my opinion, it took all the time in operating system development to get a Unix-like system with no existing hardware support and very limited hardware support.
The kernel is very sad, although you may not think so.

Another reason not to follow this method is that this will make us very short-sighted, and our thinking is fixed in this routine. There are some traps for us
It can be completely avoided through a period of planning. In short: asynchronous
I/O and multi-process. In essence, it is not difficult to support those items. Just give some relevant documents if you decide to use them early and stick to it. This is a different way of thinking. However, if no
These ideas try to add themCodeLibrary, the conversion process will be very painful.

Finally, why do I think the last reason that design is important to amateur projects is their group?
The team is relatively small. Usually one or two developers. This may not be a bad thing: In the early stages of operating system projects,
You usually don't want to argue endlessly, and don't want many people to write a lot of code segments in different ways. However, the most obvious disadvantage is that you want to rely on your own strength unless you focus only on limited things and do your best.
The idea is wrong. This is why at this stage, you should not write code, but determine the project objectives and where you want to go.

First, forget that you are targeting a specific computer,
You are writing code. You, as a team with only 1-2 people, may be one of more team members, will provide something to others (maybe only team members. Everything starts from here
Start: What kind of service do you want to provide? When can you say your project has been successful? When can you say that you have deviated from the track? To be successful on amateur operating system projects, and with many other types of personal items
The first step is to clarify the definition.
Exploration motivation

So don't hesitate to take a piece of paper or some text storage space (my blog) and explore your motives. If
You are writing an operating system because you have some complaints about the existing operating system you know, so it takes some time to find out what you don't like. Try to understand why they are like this and explore their evolution in time,
If possible, read this book. Even if it turns out to be a random choice, you should find something: the importance of not such a random choice, and pay special attention to its design. If you write an operating system
So you have to try your best to determine what you want to learn. Maybe you want to knowProgramWhere does abstraction come from?
What process is used to complete an interaction, so that a complex, non-talking electronic device can accomplish something that can be used by people with high-level education levels?

In all circumstances, you should
Take as many notes as possible to avoid interfering with your thinking process. There are two reasons for doing this: first, you can review your notes. Then, if you stick to your vague ideas, even if they cannot use English (or
You can use fluent language to express your thoughts. This forces you to translate these ideas into texts, which is more accurate than you think. If these notes are to be published or used by people you are not considering, try
Make your ideas more accurate.
Determine target audience

After determining why you did this, you can try to quickly determine what your target audience is. The operating system is a hardware
Interfaces between users and third-party software developers, so you must define all three parties to a certain extent: What is the operating system's hardware? Who uses it? Who writes software for it and what is the software type? At this stage, you
You don't have to be too precise, but you have to decide something at this time.

Hardware: At least you know how users interact with hardware (keyboards? Indicates the device ?), Which fan is the screen you want to cover?
Perimeter: How much is your current CPU power and how much memory needs to be guaranteed? You may also need to know immediately what kind of massive storage devices you will use if your operating system needs to properly connect to the network,
How to install third-party software (if any ).

Quick check if the hardware type you want to write code for is homebrew-friendly ). Many desktops
The machine and notebook are self-made and friendly (may be coming soon)
Chromeos netbook is an exception). The video game console is a hybrid package (Nintendo's console is generally, and others are usually not). Products from Apple and Sony are not homemade friends until they are out of date.
Okay. I would like to remind you that although they may sound like a platform that can write code for them, their hardware is generally very poorly recorded, you should keep this idea in your mind, or even
When you find a platform that allows you to run your own operating system and has sufficient documents available on the network, the next-generation platform cannot provide such documents that make you feel comfortable.

Most
The end user may be the most difficult thing to determine accurately, except when developers only care about themselves. You should probably continue to describe a large number of people you want to target. Some examples: a 70-year-old person at Christmas Day

The grandmother received a gift from her grandson, who had never used a computer before. At this time, she should pay special attention to her vision problems. A 40-year-old company network system administrator with a beard does not use computers,

If your system cannot operate using bash-like syntax in CLI mode. It is his job to batch process many tasks. Think about the powerful script engine. Multiple users are required to support and limit their permissions to a specific account.
20-Year-Old experienced and creative girls use digital boards and different software to draw pictures. A computer is a tool, just like other tools she has used. Your system will not function more than a piece of paper.

The
Third-party developers: first of all, if you want them to be interested in your project at some time, you must first attract them to become end users. People will not write code for a platform they don't want to use
Code, unless they are paid. In other words, developers have a special position. More directly, they create software. Therefore, one of your tasks is to determine what software you want them to develop.

It is unrealistic to let them write for you from the necessary part of the operating system (usually in the FOSS desktop operating system world) to every software and third-party software development (this is outdated, in addition to some embedded categories ). There is a broad possibility between these extreme situations. For example:

* The design/management of the operating system is proprietary, and the public specification is to facilitate third-party developers to implement or re-implement what they need.

* Most operating systems are proprietary and undisclosed, but you need to open third-party drivers and low-level tools (Windows 9x, Mac OS ).

* Similar to the above, but you require the program to access some low-level or other dangerous features to review some approval or signature programs (recent Windows version, Symbian ).

* You do not allow low-level third-party applications and will do everything you can to block them. However, you provide a local development kit for your applications to generously Access System APIs.

* Same as above, but local third-party user programs are considered dangerous and must pass some signature/approval processes (IOS ).

* There is no local third-party application, and everything is restricted by the management application to access system functions (Android, Windows Phone 7, and most functional mobile phones)

With this information, you should have a very good note in your mind, and you are not prepared for the next step.
Objectives and prospects

Think
You should put your ideas on paper. Describe what requirements your operating system needs to meet, such as who is responsible, the hardware, and who is responsible for coding. When you say that the project is successful based on the initial goal
Version 1.0 can be released. By defining the project goals, you can objectively define the success and failure of the project, which proves to be a very valuable resource, because it means to avoid function expansion and waves.
Cost your very valuable development resources.

Finally, let's look at the global view of this project. Now you ask yourself the simple question: "Can I do it ?"
If you think you should lower your expectations by a little bit, now is the right time because you will do more harm in the future. With the materials you have collected, you can work on them until you have a project (or can
Can give up writing the operating system, if you no longer like it), then you can proceed to the next step, that is, design your kernel.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.